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
的新代码。但是,我仍然可以编译并成功运行。
这让我很困惑。这是Visual Studio中的错误吗? int A<V>::func(V a)
与A类中的int func(T a)
相同吗?
在所有声明和定义中编写相同的typename是一种好习惯吗?
答案 0 :(得分:4)
这是Visual Studio中的错误吗?
是的,它是Intellisense中的一个错误(正如您可以编译并运行得很好的事实所示)。
int A<V>::func(V a)
int func(T a)
与A
中的A<V>
是否相同?
该课程为A
( return $this->redirectToRoute('operations_view',array('id'=>$user_id));
是课程模板)但是是。
在所有声明和定义中编写相同的typename是一种好习惯吗?
也许,为了最大限度地提高代码的清晰度。
如果没有理由更改模板参数的名称,请不要更改它。