【发布时间】:2020-03-31 00:39:11
【问题描述】:
我想知道是否有一种方法可以创建一个包含类型声明的数组,以便更轻松、更灵活地声明大量不同类型的变量。
例如,我想做的是有一个父类的数组,我想声明一个父类的子类的动态指针数组。
这是一个示例类声明:
class parent {
private:
int x;
}
class child1 : public parent {
private:
int y;
}
class child2 : public parent {
private:
int z;
}
这是我手动执行的操作:
parent *array[100];
int count = 0;
int child1_num = 25, child2_num = 75;
for (int i = 0; i < child1_num; i++) {
parent[count++] = new child1;
}
for (int i = 0; i < child2_num; i++) {
parent[count++] = new child2;
}
我希望我能以类似于以下的形式获得它:
parent *array[100];
child_type type[2] = {child1, child2};
int child_num[2] = {25, 75};
int count = 0;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < child_num[i]; j++) {
array[count++] = new type[i];
}
}
如果有更好的方法来解决这个问题?我想不出别的办法。
【问题讨论】:
-
std::tuple 是 C++11 的更好选择,如果没有,可以尝试 boost::mpl en.cppreference.com/w/cpp/utility/tuple
标签: c++ arrays c++11 inheritance