我有两个类Y,X。我想创建一个X类成员,它是一个Y类实例的数组。
class Y
{
public:
Y();
~Y();
void func();
int n;
};
我在某个地方读到了我应该使用指针(可能指向指针数组的指针?),以便能够与这些数据进行交互。
class X
{
public:
X();
~X();
void setY(int n);
Y *yy;
};
所以我尝试在类X中创建一个函数setY来处理添加数组yy的后续元素。我正在挣扎着 1)正确创建类Y的实例数组 2)在函数setY中 - 访问数组yy的元素并与它们交互 - 调用函数func()(我在考虑这个 - >指针)。
我仍然是一个乞丐,所以我的问题似乎很明显。
答案 0 :(得分:0)
1)正确创建Y类实例数组
创建Y类实例数组的一种方法是:
const int N = 10;
X::X()
{
yy = new Y[N]; // create array of 10 instances of class Y.
}
2)在函数setY中 - 访问数组yy的元素并与它们交互 - 调用函数func()(我在考虑这个 - >指针)。
void X::setY(int n)
{
assert(n < N); // check that n is less than N (10)
yy[n].func(); // access n-th element.
}
但是,有更好的方法,例如,使用std::vector:
#include <vector>
class X
{
public:
X();
~X();
void setY(int n);
std::vector<Y> yy;
};
X::X() : yy(N) // create std::vector of 10 instances of class Y.
{
}
void X::setY(int n)
{
yy[n].func(); // access n-th element.
}
如果您的class X
只包含固定数量的Y实例,您可以将其简化为:
class X
{
public:
X();
~X();
void setY(int n);
Y[10] yy;
};
X::X()
{
}
void X::setY(int n)
{
yy[n].func(); // access n-th element.
}