web-dev-qa-db-ja.com

エラーC2011: '': 'class'タイプの再定義

ヘッダーファイルの1つは次のとおりです-

#include "stdafx.h"

class AAA
{
public:
    std::string strX;
    std::string strY;
};

プロジェクトをコンパイルしようとすると、エラーが発生します

error C2011: 'AAA' : 'class' type redefinition

私のプログラムでは、クラスAAAを再定義していません。どうすれば修正できますか?

12
user3164272

次のようなコードに変更します。

#ifndef AAA_HEADER
#define AAA_HEADER

#include "stdafx.h"

class AAA
{
public:
    std::string strX;
    std::string strY;
};

#endif

ソースファイルにこのヘッダーファイルを複数回インクルードする場合、インクルードガードは、コンパイラーにクラスを1回だけ生成させ、class redefinitionエラー。

33
Ashot

追加中

#pragma once

aAA.hファイルの先頭に問題を処理する必要があります。

このような

#include "stdafx.h"
#pragma once

class AAA
{
public:
    std::string strX;
    std::string strY;
};
19
Kevin Johnsrude

推奨されるインクルードガードに加えて、#include "stdafx.h"をヘッダーから移動する必要があります。 cppファイルの先頭に置きます。

4
ScottMcP-MVP