21得票2回答
未知类型名称类。

我有以下头文件: https://gist.github.com/wemakeweb/5501443,但编译器一直报错"未知类型名称Class"。我已经包含了前向声明来打破循环包含,我认为我应该这样做。我忘了什么了吗? 编辑:我把它们全部放在一个头文件中,但编译器仍然报告"在顶层声明符后面...

21得票4回答
C++中两个类可以互相访问吗?

我有一个A类,在其中想要调用一些B类的函数。所以我包含了“b.h”。但是,在B类中,我又想调用A类的函数。如果我包含“a.h”,这会导致无限循环,对吗?我该怎么办呢?

21得票5回答
头文件包含 / 前向声明

在我的C++项目中,何时需要使用头文件的包含语句(#include "myclass.h"),什么情况下需要使用类的前向声明(class CMyClass;)?

20得票5回答
std::wstring的前向声明

// This is a header file. class MyClass; // It can be forward declared because the function uses reference. // However, how can I do forward decla...

20得票2回答
当枚举类型被前向声明时,为什么必须提供其大小?

我不明白为什么编译器会关心枚举的大小,而不关心类的大小。 我的代码示例: class A; enum E; // must be enum E : int; in order to compile void f(const A & param); void f(const ...

20得票3回答
“names”的存储大小未知。

在编译这个.c源文件时,我遇到了以下错误: /INIT_SOURCE_BUILD/src/names_list.c:7: error: storage size of ‘names’ isn’t known 注:本文中的HTML标签保留。 #include <stdi...

20得票1回答
在std命名空间中变量/类的前置声明

通常我主要使用前向声明,在.hpp文件中不需要完整定义的类。 例如: //B.hpp namespace A_file { class A; } namespace B_file { class B { public: B(); privat...

19得票4回答
在类中不允许使用不完全类型,但是在类模板中可以。

以下代码无效:struct foo { struct bar; bar x; // error: field x has incomplete type struct bar{ int value{42}; }; }; int main() { retu...

19得票3回答
重构C++代码以使用前置声明

我有一个相当大的代码库已经存在一段时间了,现在我正在尝试通过重构它来使其更加清晰。其中一件我想要做的事情是找到所有可以使用前向声明成员而不是包含整个头文件的头文件。 这是一个相当耗时的过程,我正在寻找一种工具,可以帮助我找出哪些头文件具有可以前向声明的成员。 是否有编译器设置可以发出警告或...

19得票4回答
有没有一种方法可以前向声明协变性?

假设我有这些抽象类 Foo 和 Bar:class Foo; class Bar; class Foo { public: virtual Bar* bar() = 0; }; class Bar { public: virtual Foo* foo() = 0; }; 假设我有派...