其中一个头文件如下 -
#include "stdafx.h"
class AAA
{
public:
std::string strX;
std::string strY;
};
当我尝试编译项目时,我收到错误
error C2011: 'AAA' : 'class' type redefinition
我的程序中没有其他地方重新定义了类AAA
。我该如何解决这个问题?
答案 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文件的顶部。