Ссылка на неразрешенный внешний символ C++
Пытаюсь создать конструктор класса в другом файле. Выводит следующие ошибки:
- Ошибка LNK1120 неразрешенных внешних элементов
- Ошибка LNK2019 ссылка на неразрешенный внешний символ "public: __cdecl TLA::TLA(void)" (??0TLA@@QEAA@XZ) в функции "public: __cdecl TAircraft::TAircraft(void)" (??0TAircraft@@QEAA@XZ).
Поискал в интернете, говорят не может найти реализацию конструктора. Как это пофиксить?
Файл h:
#pragma once
#include <cmath>
#include <iostream>
class TAObject {
public:
float x, y;
bool f;
TAObject();
TAObject(float x, float y);
~TAObject();
};
class TLA : public TAObject {
public:
float xc, yc, R, phi, V;
bool landing;
TLA();
TLA(float x, float y);
float impPhi(float b, float x, float y, float xc, float yc);
float getB(float x, float y, float xc, float yc);
virtual void move(float t, int a);
};
class TAircraft : public TLA {
public:
TAircraft();
virtual void move(float t, int a, float dt);
};
class THelicopter : public TLA {
public:
THelicopter();
virtual void move(float t, int a, float dt);
};
class TAirport : public TAObject {
public:
float dt;
float l;
TLA** LA;
int n = 5;
TAirport();
void Do(float t0, float tk);
};
Файл cpp:
#include "add.h"
TAObject::TAObject() {
std::cout << "Object created" << '\n';
}
TAObject::~TAObject() {
std::cout << "DESTRUCTION";
}
void TLA::move(float t, int a) {
switch (a) {
case 0: false; break;
case 1: true; break;
default:
break;
}
}
TAircraft::TAircraft(): TLA() {
std::cout << "Yo!";
}
THelicopter::THelicopter() {
std::cout << "Helic";
}
void TAircraft::move(float t, int a, float dt) {
float w;
w = -(this->V / this->R);
x = ((-(xc + R * cos(phi + w * t)) * (a - 1)) + a * (x + V * dt));
y = (-(yc + R * sin(phi + w * t)) * (a - 1) + y * a);
std::cout << "plane";
}
void THelicopter::move(float t, int a, float dt) {
x = x - a * V * std::cos(phi) * dt;
y = y - a * V * std::sin(phi) * dt;
std::cout << "helicopter";
}
float TLA::impPhi(float b, float x, float y, float xc, float yc) {
return (b * 3.14 + atan((y - yc) / (x - xc)));
}
float TLA::getB(float x, float y, float xc, float yc) {
if (x < xc and x < yc)
return -1;
if (x < xc and x > yc)
return 1;
if (x > xc)
return 0;
}
TLA::TLA(float x, float y) {
std::cout << "TLA created" << '\n';
std::cout << "Import xc and yc and V:" << '\n';
std::cin >> xc >> yc >> V;
}
TAirport::TAirport() {
std::cin >> dt >> x >> y;
LA = new TLA * [n];
for (int i = 0; i < n; i++) {
int a = rand() % 2;
switch (a)
{
case 0: LA[i] = new THelicopter; break;
case 1: LA[i] = new TAircraft; break;
default:
break;
}
LA[i] = new TLA(x, y);
std::cout << "success" << '\n';
}
}