C++ 可变大小指针数组

C++ 可变大小指针数组,c++,arrays,pointers,size,C++,Arrays,Pointers,Size,所以小行星是一个类的指针,至少我是这样理解的。我的问题是我不能让maxAsteroids是常数,我知道它不能是一个简单的变量。那么,将变量大小初始化为指针数组的正确方法是什么?这感觉像是我对语法的误解,但我就是不明白。谢谢 std::向量roid; Asteroid* rocks[maxAsteroids] = {}; roid.resize(最大小行星); 使用动态分配。“在堆栈上”普通数组不能调整大小,并且必须在编译时知道它们的大小。或者最好使用一些容器类。为什么不使用向量或其他集合?可能

所以小行星是一个类的指针,至少我是这样理解的。我的问题是我不能让maxAsteroids是常数,我知道它不能是一个简单的变量。那么,将变量大小初始化为指针数组的正确方法是什么?这感觉像是我对语法的误解,但我就是不明白。谢谢

std::向量roid;
Asteroid* rocks[maxAsteroids] = {};
roid.resize(最大小行星);
使用动态分配。“在堆栈上”普通数组不能调整大小,并且必须在编译时知道它们的大小。或者最好使用一些容器类。为什么不使用向量或其他集合?可能重复的向量有什么解释吗?我在周围看到了,但我读到的东西似乎都没有澄清这一点。“小行星”甚至不在代码中,更不用说是“指向类的指针”<代码>岩石是一个数组。该数组的每个成员都是一个指针,可以指向Asteroid类型的对象,尽管它当前是一个空指针。感谢这是我需要的答案,尽管我需要了解它的向量部分,但调整大小确实有助于之前了解它。无论如何,谢谢你这么快。STL是你的朋友@MattMcNabb-在需要将对象从任意位置重新排序到任意位置时,保留没有多大帮助。随着您在编程方面的经验越来越丰富,您将认识到将指向对象的指针放入容器比放入实际对象更为常见。它不仅提供了巨大的优势,因为单个对象可以同时在多个不同的容器中使用,而且有时还要求对象具有唯一的标识,从而无法将实际对象移动到另一个容器中,您只能使用指针。不要傲慢,注意并学习所有的建议和评论,因为社区总是很有帮助的。我做了16年的专业程序员,我的经验是,最简单的解决方案是最容易编写和维护的。到目前为止,OP并没有说要为他的项目添加额外的间接层是必要的。
std::vector<Asteroid*> roids;
roids.resize(maxAsteroids);