Неразрешенный внешний символ "public; virtual void _thiscall IDeveloper::writeCode(void)" (?writeCode@IDeveloper@@UAEXXZ)
Неразрешенный внешний символ "public; virtual void _thiscall IDeveloper::writeCode(void)" (?writeCode@IDeveloper@@UAEXXZ)
Разбираюсь с паттерном Bridge, и тут почему то вылазит такая ошибка. Реализация метода writeCode есть, в чем причина может быть?
#include <iostream>
using namespace std;
class IDeveloper {
public:
virtual void writeCode();
};
class JavaDeveloper : public IDeveloper {
public:
void writeCode() override {
cout << "Java Developer writes java code..." << endl;
}
};
class CPPDeveloper : public IDeveloper {
public:
void writeCode() override {
cout << "C++ Developer writes C++ code..." << endl;
}
};
class Program {
protected:
IDeveloper* developer;
public:
Program(IDeveloper* dv) : developer(dv) {
developer = dv;
}
virtual void developProgram() = 0;
};
class StockExchange : public Program {
public:
StockExchange(IDeveloper* dv) : Program(dv) {}
void developProgram() override {
developer->writeCode();
cout << "stock exchange development in progress..." << endl;
}
};
class BankSystem : public Program {
public:
BankSystem(IDeveloper* dv) : Program(dv) {}
void developProgram() override {
developer->writeCode();
cout << "Bank system development in progress..." << endl;
}
};
int main() {
setlocale(LC_ALL, "ru");
Program* program = new StockExchange(new IDeveloper);
program->developProgram();
program = new BankSystem(new IDeveloper);
program->developProgram();
}