所以我得到一个未解决的外部符号错误,我不知道为什么。所有文件都存在于同一个项目中,编译器似乎正在生成所有 obj 文件。我是从模板类派生的,所以我想也许我没有正确声明我的派生方法。我在 VS 2012 中使用 Visual C++ 编译器。
基类.h
template<class T> class BaseClass
{
public:
BaseClass() {}
virtual ~BaseClass() {}
void Foo();
}
基类.cpp
#include "BaseClass.h"
template<class T> void BaseClass<T>::Foo()
{
cout << "hello";
}
一些类.h
#include "BaseClass.h"
class SomeClass : public BaseClass<long>
{
public:
SomeClass() {}
void DoSomething();
}
SomeClass.cpp
#include "SomeClass.h"
void SomeClass::DoSomething()
{
Foo(); // link error
this->Foo(); // also gives link error
BaseClass<long>::Foo(); // also gives link error
}
因此,由于链接错误,方法 DoSomething() 似乎无法从其基类中调用任何内容。这里有什么明显的地方我做错了吗?