Неразрешенный внешний символ "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();

}

Ответы (0 шт):