我正在尝试更改在具有地址的堆中创建的类成员的值,并在下面获取错误信息。

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/

10-13 08:19