2
template <typename T>
class A {
int func(T a);
};
template <typename V>
int A<V>::func(V a) {
return 0;
}
在Visual Studio 2017中,當我編寫上面的代碼時,編輯器顯示Function denfinition for 'func' not found
,並且它建議我創建一個新的,它使用typename T
。不過,我仍然可以編譯並運行成功。不同的C++模板類型名定義是指同一個嗎?
它真的讓我困惑。這是Visual Studio中的錯誤嗎?請問int A<V>::func(V a)
和A類的int func(T a)
一樣嗎?
在所有聲明和定義中編寫相同的類型名稱是否是一種很好的做法?
該代碼是正確的C++,並且因爲它編譯和運行成功,它不是MSVC編譯器的錯誤。 Visual Studio編輯器的錯誤?當然,但我通常會用編輯器的錯誤/警告信息,直到我實際編寫了代碼。 –
@chris這是IDE中顯示的智能感知「錯誤」。這不是編譯器錯誤。 –
@FrançoisAndrieux,我的壞,我認爲這是一個警告。 – chris