c++ - 转发声明一个子类

标签 c++ header-files subclassing

我在头文件 A.h 中有一个基类 A

class A{};

在 A.cpp 中我有几个子类:

class B: public A{};
class C: public A{};

我想在单独的文件中实例化类型 B 和 C,但除非我在我的其他文件中包含 A.cpp,否则我看不到如何实现。如果我像这样在 A.h 中转发声明 B 和 C:

class B;
class C;

那么实例化类不知道它派生自A。我该如何解决这个问题?

谢谢, 埃里克

最佳答案

您需要在头文件中声明 A,例如 A.h 并将该文件包含到 B.cpp 和 C.cpp 中,如果您在中有一些非 inline 函数A(在 A 声明中定义的函数是隐式内联)你应该创建 A.cpp,在那里也包含 A.h 并在中定义这些函数A.cpp

关于c++ - 转发声明一个子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16282865/

相关文章:

c++ - 从 Swift 中的泛型参数继承的替代方法

c++ - 我怎样才能 std::getline() 一个字符串?

c++ - 将 C++ 类的定义放入头文件是一个好习惯吗?

javascript - 在 javascript 中使用 .h 定义

C++ - 需要关于如何正确设计多文件程序的建议

iphone - 子类化的 UITableView

c++ - Cereal:序列化多态类型

forms - 如何在不改变父级的情况下从子级中删除继承的对象

iphone - 在 iPhone 中修改 MWPhotoBrowser

c++ - 为什么 std::forward 返回 static_cast<T&&> 而不是 static_cast<T>?