2011-12-25 8 views
0

以下、このエラーを生成している私のコード:私は本当にこの上で立ち往生していますランタイムは、チェックの失敗 - なしで使用される変数が初期化されている

Run-Time Check Failure #3 - The variable 'IBlockObject' is being used without being initialized

。私は、初期化の問題があることを知っていますが、私はそれを解決する方法を知らない。

typedef struct{ //ISTATUS Structure 
    long statusBit; 
}ISTATUS; 

typedef struct{ // INODE Structure 
    char fileName[20]; 
    long INodeNumber; 
    long BlockAddress; 
    long NextINodeAddress; 
}INODE; 

typedef struct{ //IBLOCK Structure 
    long BlockNumber; 
}IBLOCK; 

ISTATUS IStatusObject; 
INODE INodeObject; 
IBLOCK IBlockObject; 


InitializeStructures(IStatusObject, INodeObject, IBlockObject); 
+1

なぜこれを3つの言語としてマークしましたか?あなたは正直なところ、3つの異なる言語のコンパイラで同じ正確なコードをコンパイルしようとしていますか?そして、あなたは 'InitializeStructures'の署名を表示する必要があります。 – tenfour

答えて

2

私はあなたがC++を意味するものとします、と私は仮定しますInitializeStructuresのシグネチャは次のとおりです:

void InitializeStructres(ISTATUS a, INODE b, IBLOCK c) 

問題は、あなたがでオブジェクトを渡している。ここでコードがあります。 InitializeStructuresは、渡しているこれらのオブジェクトのコピーを取得します。InitializeStructuresは、渡されたオブジェクトに反映されません。

これは、コピー操作のためにエラーが発生します。オブジェクトを初期化せずにオブジェクトをコピーしようとしています(オブジェクトを使用しています)。

私はあなたが以下のように関数のシグネチャを作成したいと仮定します。

void InitializeStructres(ISTATUS& a, INODE& b, IBLOCK& c) 

InitializeStructuresは、オブジェクトをコピーしませないように。代わりに参照渡しされたオブジェクト上で直接動作します。

クイックメモ:タイプ/変数の名前は実際には標準ではありません。 IStatusObjectのような名前は、通常はインターフェイスです(たとえば、IUnknown)。すべて大文字の名前は、通常、レガシーまたはCの記号です。

+0

私は本当にあなたの助けに感謝しますが、このことは問題を解決することができますVisual Studioは私に構文エラーを与える – user1115541

関連する問題