我在 MSVS 2010 中有一个奇怪的问题。我有一个类,它的函数是模板化的,并且包含一个具有默认值的参数。
在我的头文件中:
typedef unsinged int data32
class myClass
{
private:
...
public:
...
template <typename T>
T* myF(data32);
}
...
template<typename T>
T* myClass::myF(data32 size = 1)
{
...
}
好的,现在我的主要内容是这样的:
int main()
{
myClass A;
data32* myInt = A.myF<data32>(100); // no complaints from pre-compiler
data32* myInt2 = A.myF<data32>(); // pre-compiler complains "Error: no instance of the function template "myClass::myF" matches the argument list"
}
我明白为什么不高兴,因为我没有在课堂上为“myF()”定义函数原型,但它不应该更清楚吗?我认为默认值的重点是在调用中使参数可选。即使预编译器不满意并将其标记为问题,代码也可以正常编译和运行。
有什么想法吗??谢谢!