【发布时间】:2023-03-19 17:27:01
【问题描述】:
//A.h
class A;
//A.cpp
#include A.h
class MyA {};
using A = MyA; // error C2371 'A' : redefinition; different basic types
很多遗留代码使用类名A。
我希望新代码使用名称MyA,而不破坏现有代码。
但是,当我尝试这样做时,我收到错误 C2371: 'A' : redefinition;不同的基本类型
【问题讨论】:
-
错误的确切措辞是什么?请将错误粘贴到您的问题正文中。
-
@scohe001 很明显A这个名字在同一个作用域内被重新声明了。
-
@scohe001 错误 C2371 'A' :重新定义;不同的基本类型
-
重新声明标识符不是错误。重新定义它是。您的代码正在重新定义它,而不仅仅是重新声明它。您需要修改
A.h(“旧代码”使用)并重新定义A,使其引用您的MyA。 -
您的代码声明
A是一个类的名称。然后它声明A是一个类型别名。它们不是一回事。
标签: c++ typedef using forward-declaration