我正在尝试更改在具有地址的堆中创建的类成员的值,并在下面获取错误信息。
class class2 {
private:
string String = "x";
public:
string function() {
return String;
}
};
class class1 {
public:
string String;
class2* i;
void address(class2* x) {
x = new class2();
i = x;
}
void function(string x) {
String = x;
}
};
int main() {
int len;
cin>>len;
class1 **Class1 = new class1*[len];
for(int i = 0; i < len; i++) {
Class1[i] = new class1[i];
}
Class1[0]->address(Class1[0]->i);
Class1[0]->function(Class1[0]->i->function());
cout<<Class1[0]->String;
}
最佳答案
新运算符(operator)的此调用
Class1[i] = new class1[i];
是无效的。你的意思是
Class1[i] = new class1;
注意该成员函数
void address(class2* x) {
x = new class2();
i = x;
}
没什么意义,因为未使用传递给函数的参数。
关于c++ - 在Project70.exe中的0x0F4D514F(vcruntime140d.dll)处引发异常:0xC0000005:访问冲突写入位置0xDDDDDDDD,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58412677/