c++ - 通告包括依赖/转发声明

标签 c++

我看到的所有循环包含依赖项的解决方案只是说在“这种特殊情况”中不需要完整的类定义,因为“你”只使用指向该类的指针。

我遇到了这个问题并使用前向声明修复了它。

我想知道当你需要两个类中另一个类的具体定义时你应该做什么。

另外,为什么使用指向类的指针允许您使用前向声明而不是类定义?

最佳答案

在什么情况下您需要预先知道两个类的规范?

一种不可能的情况如下:

class A
{
    B m_b;
};

class B
{
    A m_a;
};

但这是不可能的,因为 A 类的大小取决于 B 类的大小,而 B 类的大小又取决于 A 类的大小。您还会得到一个无限级数 A myA; myA.m_b.m_a.m_b.m_a.... 当你尝试构建其中任何一个时。

如果你使用指针,你不需要知道两者的大小;指针的大小始终相同,具体取决于您所在的平台。该系列消失了,因为堆中的对象需要显式创建。

关于c++ - 通告包括依赖/转发声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45992795/

相关文章:

c++ - 为什么带变量的左移与带常量的左移产生不同的结果?

java - 为什么C++和Java都没有原生字符串,只有一个类?

c++ - CMake 和 Visual Studio : How to get a quick, 安静的命令行构建?

java - 用于开发 GUI 的更好语言?

c++ - Makefile 中 $(objs) : %. o : %. cpp 和 $(objs) : $(objs:. o=.cpp) 之间有什么区别

c++ - 突出显示光标所在的括号之间的行

c++ - 通过 id 访问 QML 槽中的嵌套对象(从 C++ 调用)

c++ - 使用可变参数宏打印多个调试行

c++ - GCC 的 "vstring"是什么?

c++ - 关于多态性的基本问题。基类的 vector ,要派生类。如何?