我有模板類MyClass的爲什麼我可以使用從模板功能
template <class T>
class MyClass
{
public:
MyClass() { }
private:
void PrivateFunction() {
std::cout << "Message From Private Function" << std::endl;
}
};
現在,當我試圖使用PrivateFunction()內的另一個功能,編譯器會報告錯誤,但是當我試圖同裏面的模板私有方法函數編譯器不顯示任何錯誤。
編譯器不報告錯誤。
template <class T> void f() { MyClass<int> a; a.PrivateFunction(); }
編譯器報告錯誤。
void f() { MyClass<int> a; a.PrivateFunction(); }
你打電話模板函數'F()'了嗎? – billz 2014-09-13 10:41:14
是的只有在這種情況下,我得到的錯誤,但我有興趣爲什麼我不能在調用函數之前看到錯誤。 – 2014-09-13 10:42:23
您是否得到錯誤取決於編譯器。即使「f」從未實例化,clang也會顯示1和2的錯誤。 – hvd 2014-09-13 10:58:28