1

ねえ、私はC ++にかなり慣れていないので、なぜこれが機能しないのかわかりません。私は 2 つのクラスを持っています。それらを ned と myfile と呼びましょう。各 ned オブジェクト内に 2 つのファイル オブジェクトが必要です。ここに単純化があります:

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
}

これは明らかに単純化されたバージョンですが、どんなアイデアでも大歓迎です。この小さな例から問題が明らかでない場合は、さらにコードを追加できます。

編集:より小さな例に変換するときに間違って入力したセミコロンを修正しました

4

4 に答える 4

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

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

次のようにする必要があります。

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

  ned() {
   this->pSrc = new myfile();
   this->pTgt = new myfile();
  }
};
于 2013-08-13T18:58:48.700 に答える
0

私は先に進み、あなたのためにそれを修正しました

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**
}
于 2013-08-13T19:11:20.543 に答える