私は Qt5 Creator を使用しています。すべてのファイルがプロジェクトに含まれています (クラス "MyCounter" は IDE ウィザードを使用して作成されます)。コードをこれに減らし、コンパイルして実行すると:
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...";
}