0

这是情况。我在两个不同的文件中有两个类。

A.cpp:

#include "B.h" 
A::A(){
B foo; //B doesn't name a type
}

B.cpp:

Class B{
//code
};

如何在 A 的构造函数中正确构造 B 的对象?(范围问题)我试过

B::B foo //wrong

以及为什么我不能像上面那样直接构造 B 类的对象,Bh 已经包含在内。非常感谢你

4

2 回答 2

3

将类定义B放入头文件:

:

#ifndef H_B_CLASS
#define H_B_CLASS

class B
{
    // member declarations
};

#endif

一个.cpp:

#include "a.h"
#include "b.h"

A::A() { B foo; /* ... */ }

b.cpp:

#include "b.h"

// B's member definitions

如果 class 中没有任何内容B,则可以省略b.cpp并将整个类定义放入头文件中。

于 2012-09-10T00:19:27.080 回答
0

如您所说,如果B完全为空,则没有可用的公共默认构造函数。您必须至少定义B()为 的公共成员class B,否则没有人可以构造它。

于 2012-09-10T00:24:00.897 回答