-1

VisualStudio2010コンパイラで奇妙なエラーが発生します。

私はのエラーを取得しています

error C2572: redefinition of default parameter
error C2011: 'class' type redefinition

私は徹底的にチェックしましたが、関数定義ではデフォルトのパラメーター値を指定しておらず、ヘッダーファイルの関数プロトタイプでのみデフォルトのパラメーター値を指定していることをよく知っています。

また、2つのクラスに同じクラス名が付けられていないことは間違いありません。

これらの一連のエラーが発生する他の理由を教えてもらえますか?

4

1 に答える 1

1

私はそれが起こった正確な理由を知りませんが、いくつかの簡単なテクニックを使ってそれを克服しました。

デフォルトのパラメーターリストを回避するために、関数のオーバーロードの概念を使用しました。コードの重複が発生しますが、非常に効果的であることが証明されています。

だからこのようなもの

void myFunction( int, char * = '\0', char * = '\0' );

こんな感じになります

void myFunction( int );
void myFunction( int, char * );
void myFunction( int, char *, char * );

この例では、コードが2回複製されていますが、これは回避策にすぎないようです。

次に、奇妙なクラス型の再定義エラーのために、私は多くのファイルでクラス変数をインスタンス化していました。そこで、インスタンス化の機能をどこからでも削除し、このようなグローバル変数を使用しました。

myHeader.hという名前のファイル

#include "myFile.h"
myClass myObj;

そして他のすべてのファイルで

#include "myHeader.h"
myObj.function1( );
myObj.function2( );
于 2013-02-13T05:59:45.143 に答える