Class 指针的访问冲突写入位置?

Class 指针的访问冲突写入位置?,class,pointers,struct,complex-numbers,Class,Pointers,Struct,Complex Numbers,这是我的卡雷。h: struct CComplexNumber { int rpart, ipart; }; class CArray { protected: CComplexNumber* a; int size; public: CArray* next; void updateElement(int rp, int ip); }; 和我的CArray.cpp: #include <iostream> using namespace

这是我的卡雷。h:

struct CComplexNumber
{
    int rpart, ipart;
};

class CArray
{
protected:
    CComplexNumber* a;
    int size;
public:
    CArray* next;
    void updateElement(int rp, int ip);
};
和我的CArray.cpp:

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

void CArray::updateElement(int rp, int ip)
{
    a->rpart = rp;
    a->ipart = ip;
}
当我调试时,cmd崩溃了。我必须退出并调试每一行。当我到达上面一行时,编译器停止并出现:

第03.exe节中0x00b1155b处未处理的异常:0xC0000005: 访问冲突写入位置0x00000000


请修复我的代码并解释为什么我不能用rp替换rpart?

您能更详细地描述您的问题吗?类中的struct未初始化/malloced/newed将其放在构造函数中,以便它分配一些内存并在它释放的析构函数中。@user503413我已编辑,请查收again@huseyintugrulbuyukisik问题是我不知道你在说什么…:(我刚练习C++,在几天内创建了一个<代码> CARRE ,它的成员<代码> CopyNoth**;< /C>是空的或空的。在代码< UpDeaEngult< /Cuff>中访问它会产生内存保护违规。为什么需要指针?
CArray* first = new CArray();
CArray* cur = first;
cur->updateElement(1,2); //=> Here is the line that causes the bug