【问题标题】:C++: using-statement of forward-declared class generates error C2371C++:前向声明类的 using 语句生成错误 C2371
【发布时间】: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

https://ideone.com/Aifxy2

很多遗留代码使用类名A

我希望新代码使用名称MyA,而不破坏现有代码。

但是,当我尝试这样做时,我收到错误 C2371: 'A' : redefinition;不同的基本类型

【问题讨论】:

  • 错误的确切措辞是什么?请将错误粘贴到您的问题正文中。
  • @scohe001 很明显A这个名字在同一个作用域内被重新声明了。
  • @scohe001 错误 C2371 'A' :重新定义;不同的基本类型
  • 重新声明标识符不是错误。重新定义它是。您的代码正在重新定义它,而不仅仅是重新声明它。您需要修改A.h(“旧代码”使用)并重新定义A,使其引用您的MyA
  • 您的代码声明A 是一个类的名称。然后它声明A 是一个类型别名。它们不是一回事。

标签: c++ typedef using forward-declaration


【解决方案1】:
//A.h
class MyA;
using A = MyA;

//A.cpp
#include A.h
class MyA {};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多