2

私は3つのクラスを持っています。メインクラスはForm1 他の2つで、Form2Form2Class3 Class3をForm1に含めました。つまり、Form1には次のようなものがあります。

#include "Form2.h"
#include "Class3.h"

また、Form2にはClass3を含めたので、Form2には次のものがあります。

#include "Class3.h"

しかし、再定義エラーが発生します。これをどのように解決できますか。

私はいつもこの問題に直面しています。ヘッダーを含めるだけで十分なstdafx.h場合もありますが、機能しない場合もあります。stdafx.hでは、C ++ / CLIのwinformプロジェクトでデフォルトで作成されているものをどのように利用して利用できるかというもう1つの質問は ありますか?

4

2 に答える 2

4

これを Class3.h に追加してみてください:

#ifndef _CLASS3_H
#define _CLASS3_H

/* your code here */

#endif

それはうまくいくはずです

何が起こっているのか理解できます。これは、 Class3.h が既に行われている場合、すべてを再定義することを妨げています。プログラムでは、Form1 は Class3 を使用しますが、Form2 も使用します。Form2 が初めてインクルードされ、Class3 もインクルードされ、次の行で Class3 を再度インクルードしようとすると、再定義エラーが発生します。

それがあなたにとって明確になることを願っています

ps: ただし、すべての .h ファイルでこれを行うことを強くお勧めします

于 2013-01-23T14:24:30.603 に答える
3

インクルードガードまたはを使用します#pragma once

于 2013-01-23T14:23:23.913 に答える