我正在使用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...";
}
答案 0 :(得分:2)
如果你有一个模板,整个实现应该在头文件中。
你不能(明智地)分别实现模板类和函数(好吧,你可以在.cpp文件中单独实例化所有特化,但为什么你会这样做吗?毕竟,你不可能想到每个可能的专业化,所以这样做没有意义......)