2014-09-07 11 views
10

Uno dei file di intestazione è la seguente -errore C2011: '': 'classe del tipo' ridefinizione

#include "stdafx.h" 

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

Quando provo a compilare il progetto, ottengo l'errore

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

Nowhere nel mio programma ho ridefinito la classe AAA. Come posso risolvere questo?

+6

È necessario utilizzare includono guardie. – juanchopanza

risposta

29

Cambia per il codice a qualcosa di simile:

#ifndef AAA_HEADER 
#define AAA_HEADER 

#include "stdafx.h" 

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

#endif 

Se si include questo file di intestazione più di una volta in qualche file sorgente, comprendono guardie costringeranno compilatore di generare classe solo una volta in modo da non dare class redefinition errore .

+0

AAA_HEADER è il file AAA.h? – user3164272

+2

AAA_HEADER è solo una stringa univoca per identificare il file. Leggi le guardie qui http://stackoverflow.com/questions/8020113/c-include-guards – Ashot

2

Oltre alle protezioni di inclusione consigliate è necessario spostare #include "stdafx.h" dall'intestazione. Mettilo nella parte superiore del file cpp.

15

Aggiunta

#pragma once 

alla parte superiore del file AAA.h dovrebbe prendersi cura del problema.

come questo

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