【发布时间】:2016-05-03 03:22:53
【问题描述】:
我尝试使用指针创建一个向量(以便所有内容都存储在堆中/堆上)。然后我想用一个类的数组填充向量。我正在考虑通过class[i].member 访问课程...遗憾的是,它不起作用。
如果我在没有矢量的情况下尝试此操作,则可以使用,例如:
tClass *MyClass = new tClass[5]
我在没有特定目的的情况下尝试这样做,只是为了更好地理解 C++。谁能看看我错在哪里?谢谢!
代码如下:
#include "iostream"
#include "vector"
using namespace std;
class tClass
{
private:
int x = 0;
public:
int y = 0;
tClass(){cout << "New" << endl;};
~tClass(){}; //do I need to make a delete here?
int main ()
{
vector<tClass> *MyClass[5];
MyClass = new vector<tClass>[5];
cout << MyClass[3].y << endl;
delete[] MyClass;
}
【问题讨论】:
-
我很困惑。你想要一个向量数组,还是一个指向向量的指针数组?声明
vector<tClass> *MyClass[5];产生后者,但new vector<tClass>[5]创建前者。无论哪种方式,MyClass[3]要么是vector,要么是指向vector的指针,两者都没有名为y的成员。 -
如果你想要一个包含 5 个
tClass实例的向量(正如new tClass[5]所暗示的那样),那么让它成为vector<tClass> MyClass(5);你太复杂了。 -
感谢您对我的“代码”的分析。我现在根据您对语法的建议解决了这个问题。
标签: c++ class pointers vector heap-memory