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