我的模板成员类遇到意外错误。 我有两个类,分为两个.h和.cc对。我们称它们为ClassA和ClassB。 ClassA中有一个成员函数,它从ClassB接收一个类实例。
/** --------- classa.h -------*/
class ClassA
{
public:
template <typename T>
void doSomething(T* instance, const char* message);
};
/** ---------- classa.cc */
template <typename T>
void ClassA::doSomething(T* instance , const char* message)
{
instance->notify(message);
}
下一对文件如下;
class ClassB
{
public:
ClassB();
void notify(const char* message);
};
/**-----------------classb.cc------*/
ClassB::ClassB()
{
ClassA *instance = new ClassA();
instance->doSomething(this , "Test message");
}
void ClassB::notify(const char* message)
{
std::cout<<message;
}
g ++不会编译它,并在链接时返回以下错误。
对`void ClassA :: doSomething
(ClassB *,char const *)'的未定义引用
**当我不使用模板并按以下方式定义doSomething函数时,一切都会顺利进行。
void doSomething(ClassA* instance, const char* message);