fout C2011: ” : ‘class’ type herdefinitie

Een van de header-bestanden is als volgt –

#include "stdafx.h"
class AAA
{
public:
    std::string strX;
    std::string strY;
};

Als ik het project probeer te compileren, krijg ik de foutmelding

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

Nergens anders in mijn programma heb ik de klasse AAAopnieuw gedefinieerd. Hoe los ik dit op?


Antwoord 1, autoriteit 100%

Verander in code in iets als dit:

#ifndef AAA_HEADER
#define AAA_HEADER
#include "stdafx.h"
class AAA
{
public:
    std::string strX;
    std::string strY;
};
#endif

Als je dit headerbestand meer dan eens in een bronbestand opneemt, zal include guards de compiler dwingen om slechts één keer klasse te genereren, zodat het geen class redefinition-fout geeft.


Antwoord 2, autoriteit 61%

Toevoegen

#pragma once

naar het begin van je AAA.h-bestand zou het probleem moeten oplossen.

zoals dit

#include "stdafx.h"
#pragma once
class AAA
{
public:
    std::string strX;
    std::string strY;
};

Antwoord 3, autoriteit 9%

Naast de voorgestelde include-bewakers moet je #include “stdafx.h” uit de koptekst verwijderen. Zet het bovenaan het cpp-bestand.

Other episodes