考虑以下示例:
class MyClass
{
const int _id;
public:
MyClass(auto id) : _id(id) {}
};
int main()
{
MyClass(3);
return 0;
}
工作正常。
另外
class MyClass
{
const int _id;
public:
MyClass(auto id);
};
MyClass::MyClass(auto id) : _id(id)
{
}
int main()
{
MyClass(3);
return 0;
}
工作正常。
然而,
#ifndef MYCLASS_H
#define MYCLASS_H
class MyClass
{
const int _id;
public:
MyClass(auto id);
};
#endif
和
#include "MyClass.h"
MyClass::MyClass(auto id) : _id(id)
{
}
和
#include "MyClass.h"
int main()
{
MyClass(3);
return 0;
}
给出了这个链接器错误:
/tmp/ccJQ1HNz.o: In function `main':
deduce.cpp:(.text+0x15): undefined reference to `MyClass::MyClass<int>(int)'
collect2: error: ld returned 1 exit status
所以它必须对模板做些什么..但是它们在哪里进来?