そのため、未解決の外部シンボル エラーが発生し、その理由がわかりません。すべてのファイルが同じプロジェクトに存在し、コンパイラはすべての obj ファイルを生成しているようです。私はテンプレート クラスから派生しているので、派生メソッドを適切に宣言していないのではないかと考えています。VS 2012 でビジュアル C++ コンパイラを使用しています。
BaseClass.h
template<class T> class BaseClass
{
public:
BaseClass() {}
virtual ~BaseClass() {}
void Foo();
}
BaseClass.cpp
#include "BaseClass.h"
template<class T> void BaseClass<T>::Foo()
{
cout << "hello";
}
SomeClass.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() は、リンク エラーのために基本クラスから何も呼び出すことができないようです。ここで私が間違っていることは明らかですか?