错误C2011:'' :' class'类型重新定义

时间:2014-09-07 19:01:47

标签: c++ class visual-studio-2005

其中一个头文件如下 -

#include "stdafx.h"

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

当我尝试编译项目时,我收到错误

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

我的程序中没有其他地方重新定义了类AAA。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:32)

将代码更改为以下内容:

#ifndef AAA_HEADER
#define AAA_HEADER

#include "stdafx.h"

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

#endif

如果在某个源文件中多次包含此头文件,则include guard将强制编译器仅生成一次类,因此不会出现class redefinition错误。

答案 1 :(得分:19)

添加

#pragma once

到AAA.h文件的顶部应该解决问题。

像这样

#include "stdafx.h"
#pragma once

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

答案 2 :(得分:4)

除了建议的包含警卫之外,您还需要将#include“stdafx.h”移出标题。把它放在cpp文件的顶部。