我有一段代码可以分配并创建5个MyClass类型的对象:
#include <iostream>
#include <new>
struct MyClass {
int data;
};
int main () {
struct MyClass *p1=new MyClass[5];
p1->data=42;
return 0;
}
因此,如果我正确理解,p1是指向存储这5个对象的Myclass [5]大小的内存位置的指针。因此,通过使用p1-> data = 42是为5个对象中的每一个更新的int数据如果是这样,我如何单独更新特定对象的数据?(假设第三个对象)
答案 0 :(得分:3)
更新: 如果您分配自己,如HolyBlackCat所说:
p1[i].data = 42;
Bu,如果这不是一项任务,并且您不必使用new ...
#include <vector>
struct MyClass {
int data;
};
using MyClassVect_type = std::vector<MyClass>;
int main() {
MyClassVect_type my_5(5);
my_5.at(0).data = 37;
my_5.at(1).data = 42;
//or
my_5[2].data = 13;
//etc....
return 0;
}
答案 1 :(得分:2)
因此,使用
p1->data=42
是针对5个对象中的每个对象更新的int
数据。
不正确。 p1
指向这5个对象中的第一个。因此,p1->data=42
仅分配第一个对象的成员。
如何为特定对象单独更新数据?
您可以使用下标运算符访问兄弟对象:p1[i].data = 42
分配数组中第i
个对象的成员。
P.S。该示例程序泄漏了分配的内存。
P.P.S。不必包含标题<new>
即可使用new
表达式。