我有以下头文件: https://gist.github.com/wemakeweb/5501443,但编译器一直报错"未知类型名称Class"。我已经包含了前向声明来打破循环包含,我认为我应该这样做。我忘了什么了吗? 编辑:我把它们全部放在一个头文件中,但编译器仍然报告"在顶层声明符后面...
我有一个A类,在其中想要调用一些B类的函数。所以我包含了“b.h”。但是,在B类中,我又想调用A类的函数。如果我包含“a.h”,这会导致无限循环,对吗?我该怎么办呢?
在我的C++项目中,何时需要使用头文件的包含语句(#include "myclass.h"),什么情况下需要使用类的前向声明(class CMyClass;)?
// This is a header file. class MyClass; // It can be forward declared because the function uses reference. // However, how can I do forward decla...
我不明白为什么编译器会关心枚举的大小,而不关心类的大小。 我的代码示例: class A; enum E; // must be enum E : int; in order to compile void f(const A & param); void f(const ...
在编译这个.c源文件时,我遇到了以下错误: /INIT_SOURCE_BUILD/src/names_list.c:7: error: storage size of ‘names’ isn’t known 注:本文中的HTML标签保留。 #include <stdi...
通常我主要使用前向声明,在.hpp文件中不需要完整定义的类。 例如: //B.hpp namespace A_file { class A; } namespace B_file { class B { public: B(); privat...
以下代码无效:struct foo { struct bar; bar x; // error: field x has incomplete type struct bar{ int value{42}; }; }; int main() { retu...
我有一个相当大的代码库已经存在一段时间了,现在我正在尝试通过重构它来使其更加清晰。其中一件我想要做的事情是找到所有可以使用前向声明成员而不是包含整个头文件的头文件。 这是一个相当耗时的过程,我正在寻找一种工具,可以帮助我找出哪些头文件具有可以前向声明的成员。 是否有编译器设置可以发出警告或...
假设我有这些抽象类 Foo 和 Bar:class Foo; class Bar; class Foo { public: virtual Bar* bar() = 0; }; class Bar { public: virtual Foo* foo() = 0; }; 假设我有派...