保存另一个类的数组的c++类

C++ Class that hold an array of another class

本文关键字:c++ 数组 另一个 保存      更新时间:2023-10-16

我有一个类,我们叫它a,我想创建另一个类B它将包含n个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 *"的实体

怎么了?

根据编译器错误,听起来您不小心将预声明放在了b的作用域中。

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

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

它看到一个 B::一个::一个。至于为什么,没有足够的代码可以知道。检查您的名称空间和类,仔细检查预先声明A的位置和实际定义A的位置。检查它们是否在同一作用域中。

可以使用vector来达到同样的目的。

#include "A.h"
class B
{
    std::vector<A> array;
}

如果必须不包含A.h,则可以预先声明A,并将数组定义为:

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