2011-12-11 14 views
1

編集:私は愚かで、私はそれを割り当てませんでした。助けてくれてありがとう!

これは私自身が終わったと思っていたエラーですが、それはまだ戻っています。なぜそれが起こっているのかわかりません。サイズ4の初期化されていない値の使用

ここでエラーに先立つ.Cファイルからコードです:

int main(int argc, char* argv[]) 
{ 
    if(argc > 3) 
    { 
     cout << "Too many arguments. Program will close.\n"; 
     return 1; 
    } 

    else 
    { 
     int numRooms = 0; 
     int start = 0; 
     ifstream file; 

     if(argc == 3)//Dump wanted 
      file.open(argv[ 2 ] , ifstream::in); 

     else 
      file.open(argv[ 1 ] , ifstream::in); 


     if(file.is_open()) 
     { 
      file >> numRooms; 
      Graph * maze = new Graph(numRooms); 

グラフ*迷路=新しいグラフ(numRoomsが)。エラーが(:41 a11.C):参照されているところがある

==17900== Use of uninitialised value of size 4 
==17900== at 0x8048F05: Graph::Graph(int) (Graph.C:25) 
==17900== by 0x8048C1D: main (a11.C:41) 

ここからはライン16、Graph.Cファイルに、より深く掘り下げ - 30:

Graph::Graph(int num) 
{ 
    numRooms = num; 
    _index = 0; 
    _start = 0; 

    easyDelete = new Room*[ num ]; 
    escapePath = new string[ num ]; 

    theWALL -> myNumber = -1; 
    theWALL -> visited = true; 

    safety -> myNumber = 0; 
    safety -> visited = false; 
} 

ライン25これはです:theWALL - > myNumber = -1;

"theWALL" と "安全性" の両方のプライベート*ルームオブジェクトです:

struct Room 
    { 
     bool visited; 
     int myNumber; 

     Room *North; 
     Room *East; 
     Room *South; 
     Room *West; 
    }; 

とき、私それがアップ初期化されています:構造体 "ルーム" は、このようになります

Private: 
    Room * theWALL; 
    Room * safety; 

新しいグラフ(numRooms)を呼び出すと、その情報を埋めています...まだこのエラーが発生します。

答えて

6

あなたは

theWALL -> myNumber = -1; 

でそれを使用する前に、

Room * theWALL; 

を割り当てていないように見えますが

theWall = new Room(); 
theWALL -> myNumber = -1; 

のようなものを試してみて、あなたがのために同じバグがあります。

Room * safety; 

それも割り当ててみてください。

+2

ありがとう、私は新しい**それは愚かなものでした。 – Joshua

関連する問題