Ошибка 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.