不同的C 模板类型定义是指相同的定义

Different C++ template typename definition means the same one?

本文关键字:定义 类型      更新时间:2023-10-16
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)相同吗?

在所有声明和定义中编写相同的类型是一个好习惯?

这是Visual Studio中的错误吗?

是的,这是Intellisense中的一个错误(如您可以编译并运行正常的事实所示(。

int A<V>::func(V a)A类中的int func(T a)相同?

类是A<V>(A是A 类模板(但是是。

在所有声明和定义中编写相同的类型是一个好习惯吗?

也许是为了最大化代码的清晰度。

如果没有理由更改模板参数的名称,请不要更改它。