gpt4 book ai didi

c++ - 结构的指针以及如何访问元素

转载 作者:行者123 更新时间:2023-11-30 00:44:00 25 4
gpt4 key购买 nike

我想为结构的女巫构造函数和析构函数创建一个小示例,但我的问题是我无法“打印”Zahlen[0],我不知道为什么?

感谢任何形式的帮助。

也许我必须用指针参数打印它?

#include <iostream>
using namespace std;

struct IntList{
int *memory;
int size;

// Konstruktur
IntList(unsigned initialSize = 0) {
memory = new int[initialSize];// Speicher reservieren (0 erlaubt)
size = initialSize;
}

//Destruktor
~IntList() {
delete []memory; // Speicher freigeben
}

// Access Elemnts
int &operator[](unsigned index) {
if (index>=size) {throw std::out_of_range("out of bounds");}
return memory[index];
}
};



int main()
{
IntList *Numbers = new IntList(10);
Numbers[0] = 1;
cout << Numbers[0] << endl;
delete Numbers;

return 0;
}

最佳答案

IntList *Numbers = new IntList(10);
Numbers[0] = 1;
cout << Numbers[0] << endl;

Numbers 是指向 IntList 的指针类型。自远古以来,指针在 C 系列中就具有类似数组的语义,因此 Numbers[0] 不是对 IntList::operator[] 的调用,而仅仅是指针的第一个元素,即您在堆上分配的 IntList

要么在堆栈上创建它:

IntList Numbers(10);
Numbers[0] = 1;
cout << Numbers[0] << endl;
// automatically destroyed on exiting scope

或者至少正确地解决它:

IntList *Numbers = new IntList(10);
(*Numbers)[0] = 1;
cout << (*Numbers)[0] << endl;
delete Numbers;

关于c++ - 结构的指针以及如何访问元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51382846/

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