首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问冲突写入0xcdcdcef#,对象中的对象

访问冲突写入0xcdcdcef#,对象中的对象
EN

Stack Overflow用户
提问于 2013-08-13 18:56:46
回答 4查看 75关注 0票数 1

嘿,所以我对C++相当陌生,我不知道为什么这不起作用。我有两门课,我们叫他们内德和我的档案。我需要在每个ned对象中有两个文件对象。以下是一个简化:

代码语言:javascript
复制
class myfile {
  public:
      int nData;
      int nHeaderSize;

  myfile() {
    nData=0;
    nHeaderSize=0;
  }
};

class ned {
  public:
    myfile *pSrc,*pTgt;

  ned() {
   myfile* pSrc = new myfile();
   myfile* pTgt = new myfile();
  }
};

int main(int argc, char* argv[]) {
  ned* nedObj = new ned();
  nedObj->pSrc->nData=5; //Access violation error here
}

这显然是一个简化的版本,但任何想法都是可取的。如果这个小例子中的问题不明显,我可以添加更多的代码。

编辑:修正分号,当我翻译到较小的例子时,我输入错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-13 18:58:24

变化

代码语言:javascript
复制
ned() {
  myfile* pSrc = new myfile();
  myfile* pTgt = new myfile();
}

代码语言:javascript
复制
ned()
: pSrc(new myfile),
  pTgt(new myfile) {
}

目前,您的代码不初始化nedObj。相反,ned的构造函数创建了两个名为pSrcpTgt的局部变量。

票数 4
EN

Stack Overflow用户

发布于 2013-08-13 18:58:48

代码语言:javascript
复制
class ned {
  public:
    myfile *pSrc;*pTgt;

  ned() {
   myfile* pSrc = new myfile();
   myfile* pTgt = new myfile();
  }
};

应:

代码语言:javascript
复制
class ned {
  public:
    myfile *pSrc;*pTgt;

  ned() {
   this->pSrc = new myfile();
   this->pTgt = new myfile();
  }
};
票数 3
EN

Stack Overflow用户

发布于 2013-08-13 19:11:20

我先帮你修好了

代码语言:javascript
复制
class myfile {
public:
  int nData;
  int nHeaderSize;

myfile() {
  nData=0;
  nHeaderSize=0;
  }
}; **//missing semicolon here**

class ned {
public:
  myfile *pSrc, *pTgt; **//was myfile *pSrc;*pTgt, needed a coma instead**

ned() {
 myfile* pSrc = new myfile();
 myfile* pTgt = new myfile();
  }
}; //missing semicolon here

int main(int argc, char* argv[]) {
   ned* nedObj = new ned();
   nedObj->pSrc->nData=5; **//Access violation error here**
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18216986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档