1. ホーム
  2. c++

[解決済み】エラー C2011: '' : 'クラス' 型の再定義

2022-02-01 05:56:26

質問

ヘッダーファイルの1つは以下の通りです。

#include "stdafx.h"

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

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

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

このプログラムでは、他のどこにもクラス AAA . これはどうすれば直るのでしょうか?

どのように解決するのですか?

以下のようなコードに変更してください。

#ifndef AAA_HEADER
#define AAA_HEADER

#include "stdafx.h"

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

#endif

このヘッダファイルを複数回インクルードした場合、インクルードガードはコンパイラに一度だけクラスを生成するように強制し、これにより class redefinition というエラーが発生します。