C ++ 11模板成员最终出现错误

时间:2019-01-05 23:55:20

标签: c++ c++11 templates

我的模板成员类遇到意外错误。 我有两个类,分为两个.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);

0 个答案:

没有答案