gpt4 book ai didi

c++ - 指向类 vector 的指针 - 我无法访问类的成员

转载 作者:太空宇宙 更新时间:2023-11-04 13:21:46 24 4
gpt4 key购买 nike

我尝试创建一个带有指针的 vector (以便所有内容都存储在堆中/堆上)。然后我想用一个类的数组填充 vector 。我正在考虑通过 class[i].member 访问该类...遗憾的是,它不起作用。如果我在没有 vector 的情况下尝试这样做,它会起作用,例如:

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;
}

最佳答案

正如其他人所建议的那样,如果您只想要一个 tClass vector ,您可以执行以下操作

vector<tClass> vectorName (5);

然后像这样访问它

vectorName[3].y;

但是,如果您想要一个 tClass 指针 vector ,您可以像这样初始化和访问它

vector<tClass*> vectorName(5);
vectorName[3]->y;

编辑

这可能对您有更多帮助,这是您的代码,带有注释以帮助您了解出了什么问题

class tClass

{私有(private)的: 整数 x = 0;民众: 整数 y = 0; tClass(){ cout << "新建"<< endl; }; ~tClass(){};//我需要在这里删除吗?//不,你不需要在这里删除,因为这个类不包含“新闻”

int main()
{
vector<tClass> *MyClass[5]; //use () to give a vector an initial size, [] is only to access a member
//also to have a vector holding pointers, the asterisk needs to be after tClass not before the vector name
MyClass = new vector<tClass>[5];
cout << MyClass[3].y << endl; //discused above
delete[] MyClass; //only needed if a new is used, however you dont need one here, as it will just go out of scope
}

这是你的代码,但固定为使用指针编译和运行

#include <iostream>
#include <vector>
using namespace std;

class tClass
{
private:
int x = 0;
public:
int y = 0;
tClass(){ cout << "New" << endl; };
};

int main()
{
vector<tClass*> MyClass(5);
cout << MyClass[3]->y << endl;
}

请注意,这会产生错误,因为类指针的 vector 未指向任何类

关于c++ - 指向类 vector 的指针 - 我无法访问类的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35015954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com