gpt4 book ai didi

c++ - 尝试使用成员函数访问动态分配的成员变量时发生读取访问冲突

转载 作者:行者123 更新时间:2023-11-28 02:06:09 24 4
gpt4 key购买 nike

我有一个名为 person 的类,它有一个指向整数数组的指针,该数组是用构造函数中的“new”关键字动态分配的。但是,当我尝试通过成员函数“person::getval”的指针访问此数组时,我收到读取访问冲突。对我做错了什么有什么想法吗?我认为这可能与范围有关,因为如果我从构造函数内部访问“numlist”数组,则没有问题。谢谢。

人.h

    class person {
public:
person();
person(int length);
~person();
int getval(int a);
void setval(int a, int b);
private:
int* numlist;
int listlength;
int age;

};

人.cpp

#include "stdafx.h"
#include "person.h"

person::person() {
person(4);
}
person::person(int length){
age = 16;
numlist = new int[length];
listlength = length;
for (int k = 0; k < length; k++) {
numlist[k] = 0;
}
}
person::~person() {
delete[] numlist;
}
int person::getval(int a) {
return *(numlist + a); //READ ACCESS VIOLATION OCCURS HERE
}

void person::setval(int position, int val) {
*(numlist + position) = val;
}

主要

#include "stdafx.h"
#include "person.h"
#include <iostream>
using namespace std;


int main()
{
person mark;
cout << mark.getval(1)<<endl;
int x; //hold output
cin >> x;
return 0;
}

最佳答案

person::person() {
person(4);
}

你正在创建一个临时的人,而不是对它做任何事情,而不是在你自己身上调用构造函数。你真的想要这个:

person::person() : person(4) {}

关于c++ - 尝试使用成员函数访问动态分配的成员变量时发生读取访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37356875/

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