Я занимаюсь разработкой на родном C ++, использую Visual Studio.
У меня есть один проект, который содержит инфраструктуры - базовые классы, из которых я хочу получить классы в других проектах в том же решении. Скажем, у меня есть базовый класс в проекте инфраструктуры:
файл base.h:
class Base
{
public:
void Foo();
protected:
void Bar();
};
и в другом проекте, классе, производном от A, попробуйте вызвать метод bar:
файл производного.h:
class Derived : Base
{
public:
void DoSomething();
};
файл производный.cpp:
void Derived::DoSomething()
{
Bar();
}
файл main.cpp:
void main()
{
Derive d;
d.Foo(); //OK
d.DoSomething(); // Linker error
}
генерирует следующую ошибку компоновщика:
Ошибка 1, ошибка LNK2001: неразрешенный внешний символ «public: virtual void __thiscall Base :: Bar (void)» (? Bar @ Base @@ UAEXXZ) main.obj CplusplusTestProject
Что я делаю не так?