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>();
进入main函数,它(VS2010)可以编译好了。但是如果我把它放在main之外,就会出现上面的编译错误。
答案 0 :(得分:4)
在C ++中,表达式(如调用函数)只能在函数内部(或变量的初始化者内部)发生。只是在函数外面调用是一个错误。