Ошибка C2011: '': переопределение типа класса
Один из файлов заголовков выглядит следующим образом:
#include "stdafx.h"
class AAA
{
public:
std::string strX;
std::string strY;
};
Когда я пытаюсь скомпилировать проект, я получаю сообщение об ошибке
error C2011: 'AAA' : 'class' type redefinition
Нигде в моей программе не было переопределено класс AAA
. Как это исправить?
Ответы
Ответ 1
Измените код на что-то вроде этого:
#ifndef AAA_HEADER
#define AAA_HEADER
#include "stdafx.h"
class AAA
{
public:
std::string strX;
std::string strY;
};
#endif
Если вы включите этот файл заголовка более одного раза в некоторый исходный файл, включите защитники, чтобы заставить компилятор генерировать класс только один раз, чтобы он не выдавал ошибку class redefinition
.
Ответ 2
Добавление
#pragma once
в верхней части вашего файла AAA.h следует позаботиться о проблеме.
как это
#include "stdafx.h"
#pragma once
class AAA
{
public:
std::string strX;
std::string strY;
};
Ответ 3
В дополнение к предлагаемым включенным защитным устройствам вам нужно переместить #include "stdafx.h" из заголовка. Поместите его в начало файла cpp.