未定义的对c ++类构造函数的引用

时间:2013-06-30 15:09:25

标签: c++ qt linker

我正在使用Qt5创建者,所有文件都包含在项目中  (使用IDE向导创建“MyCounter”类) 我把我的代码缩减到了这个, 当我编译并运行时:

         undefined reference to MyCounter<int>::MyCounter()

的main.cpp

#include <QCoreApplication>
#include"mycounter.h" //if include "mycounter.cpp" instead of "mycounter.h" works fine


int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyCounter<int> x;
return a.exec();
}

mycounter.h

 #ifndef MYCOUNTER_H
 #define MYCOUNTER_H

 template<class T>
 class MyCounter
 {
   public:
      MyCounter();
 };

 #endif // MYCOUNTER_H

mycounter.cpp

   #include "mycounter.h"
   #include <iostream>


  template<class T>
  MyCounter<T>:: MyCounter()
 {
  std::cout<<"somthing...";
}

1 个答案:

答案 0 :(得分:2)

如果你有一个模板,整个实现应该在头文件中。

你不能(明智地)分别实现模板类和函数(好吧,你可以在.cpp文件中单独实例化所有特化,但为什么你会这样做吗?毕竟,你不可能想到每个可能的专业化,所以这样做没有意义......)