0
struct Message1 {
int a;
int b;
};
template<class MSG_T> void RegisterMessageType() {
MSG_T t;
}
Message1 m;
RegisterMessageType<Message1>();
错误消息:如何调用此函数模板?
error C2909: 'RegisterMessageType': explicit instantiation of function template
requires return type
error C4430: missing type specifier - int assumed.
Note: C++ does not support default-int
error C2768: 'RegisterMessageType' : illegal use of explicit template arguments
有什么不对?谢谢。
对不起,再次编辑。
,如果我把
Message1 m;
RegisterMessageType<Message1>();
成主要功能,它(VS2010)可以对其进行编译好了。但是如果我把它放在main之外,就会发生上面的编译错误。
@Borgleader:这是因为你将函数调用转换为函数。 – 2014-09-19 15:40:43
我不明白的是你为什么要这样称呼它。它不需要任何参数,不会返回任何东西,它的主体只是创建(然后立即销毁)一个本地对象。如果你的例子不那么简单,而且实际上做了什么,你就会知道如何调用它。 – 2014-09-19 15:55:13
这是我愚蠢的错误。 C++不允许调用主函数以外的函数。在这种情况下,编译器将该表达式假定为专门的函数模板。这使我困惑。 – user792883 2014-09-19 15:56:41