99得票3回答
什么是<iosfwd>头文件?

"&lt;iosfwd&gt; 头文件 有什么用?为什么它是必需的? 有例子吗?"

98得票1回答
使用unique_ptr进行前向声明

我发现在类的前向声明中结合使用std::unique_ptr非常有用,就像下面的代码一样。它可以在GCC中编译和工作,但整个过程似乎有点奇怪,我想知道这是否是标准行为(即标准要求)?因为当我声明unique_ptr时,B不是一个完整的类型。 A.hpp #include &lt;memor...

97得票9回答
在可能的情况下,是否应该使用前向声明而不是包含头文件?

如果一个类声明只使用另一个类作为指针,那么使用类前向声明而不是包含头文件有意义吗?目的是为了预防循环依赖问题。所以,可以这样写://file C.h #include "A.h" #include "B.h" class C{ A* a; B b; ... }; 做这...

90得票5回答
在C++中,是否可以提前声明一个继承另一个类的类?

我知道我可以这样做:class Foo; 但我能否将一个类声明为继承自另一个类,例如:class Bar {}; class Foo: public Bar; 一个例子用例是协变引用返回类型。// somewhere.h class RA {} class RB : public RA {}...

69得票2回答
错误:访问不完整类型的成员:前向声明

我在同一个.cpp文件中有两个类:// forward class B; class A { void doSomething(B * b) { b-&gt;add(); } }; class B { void add() { ......

66得票7回答
C++中的int main()需要声明吗?

我曾被教导函数需要进行声明才能调用。为了说明这一点,以下例子会出现错误,因为函数sum没有进行声明: #include &lt;iostream&gt; int main() { std::cout &lt;&lt; "The result is " &lt;&lt; sum(1, 2...

66得票4回答
C++访问类引用信息时出现“不允许不完整类型”错误(前向声明中存在循环依赖)

最近我的代码出现了一些问题,涉及到循环依赖。简而言之,有两个类,Player和Ball,它们都需要使用对方的信息。在代码的某个时刻,它们都将被传递对方的引用(从另一个包含两个.h文件的类中传递)。 阅读了相关资料后,我从每个文件中移除了#include.h文件,并采用了前向声明。这解决了彼此...

63得票3回答
在C语言中,结构体的前向声明是什么意思?

#include &lt;stdio.h&gt; struct context; struct funcptrs{ void (*func0)(context *ctx); void (*func1)(void); }; struct context{ funcptrs ...

60得票3回答
前向声明模板类时出现“未定义模板的隐式实例化”错误

我有一些代码,其中需要前向声明一个模板类(或者至少,前向声明会让事情变得更容易...)。我写了一个简化版本的代码,以便在这里展示:template&lt;bool&gt; class MyTemplateClass; int main( int argc, char* argv[] ) { ...

57得票3回答
为什么C++友元类只需要在其他命名空间中进行前向声明?

假设我有一个名为 F 的类,它应该是类 G(在全局命名空间)和类 C(在命名空间 A 中)的友元。 要成为 A::C 的友元,必须提前声明 F。 要成为 G 的友元,不需要提前声明 F。 同样,类 A::BF 可以成为 A::C 的友元而无需提前声明。 下面的代码说明了这一点,并使用 ...