情况如下。我在两个不同的文件中有两个类。
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类的对象,B.h已被包括在内。非常感谢你
答案 0 :(得分:3)
将B
的类定义放入头文件中:
<强> b.h:强>
#ifndef H_B_CLASS
#define H_B_CLASS
class B
{
// member declarations
};
#endif
<强> a.cpp:强>
#include "a.h"
#include "b.h"
A::A() { B foo; /* ... */ }
<强> b.cpp:强>
#include "b.h"
// B's member definitions
如果类B
中没有任何内容,则可以省略b.cpp
并将整个类定义放入头文件中。
答案 1 :(得分:0)
如果B
完全为空,如您所说,则没有可用的公共默认构造函数。您必须至少将B()
定义为class B
的公共成员,否则无人可以构建它。