包含另一个类的数组的C ++类

时间:2013-03-12 22:46:55

标签: c++ arrays class object

我有一个班级,我们称之为A,我想创建另一个B级,它将包含A个实例。

B头文件:

class A;
class B
{
    B();
    A * arrayofA;
}

B.cpp

#include "B.h"
#include "A.h"
B::B() {
 arrayofA = new A[n];
}

Visual Studio强调=运算符并告诉我: 错误:类型“B :: A *”的值无法分配给“A *”

类型的实体

怎么了?

1 个答案:

答案 0 :(得分:2)

根据编译器错误,听起来你不小心将预先声明放在B的范围内。

编译器似乎认为你这样做:

class B
{
   class A; //It's seeing 'A' inside of 'B'.

   A *arrayOfA;
};

同时看到 B :: A :: A 。至于为什么,没有足够的代码可以知道。检查命名空间和类,仔细检查预先声明A的位置以及实际定义A的位置。检查它们是否在同一范围内。

您可以使用矢量来实现相同的目的。

#include "A.h"

class B
{
    std::vector<A> array;
}

或者如果你必须没有包括A.h,那么你可以预先声明A,并将数组定义为:

std::vector< std::unique_ptr<A> > array;