如何调用此功能模板?

时间:2014-09-19 15:34:29

标签: c++

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之外,就会出现上面的编译错误。

1 个答案:

答案 0 :(得分:4)

在C ++中,表达式(如调用函数)只能在函数内部(或变量的初始化者内部)发生。只是在函数外面调用是一个错误。