web-dev-qa-db-fra.com

erreur C2011: '': redéfinition du type 'classe'

L'un des fichiers d'en-tête est le suivant -

#include "stdafx.h"

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

Lorsque j'essaie de compiler le projet, j'obtiens l'erreur

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

Nulle part ailleurs dans mon programme je n'ai redéfini la classe AAA. Comment puis-je réparer ça?

12
user3164272

Changez pour coder quelque chose comme ceci:

#ifndef AAA_HEADER
#define AAA_HEADER

#include "stdafx.h"

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

#endif

Si vous incluez ce fichier d'en-tête plusieurs fois dans un fichier source, les gardes d'inclusion forceront le compilateur à générer la classe une seule fois afin de ne pas donner class redefinition Erreur.

33
Ashot

Ajouter

#pragma once

en haut de votre fichier AAA.h devrait résoudre le problème.

comme ça

#include "stdafx.h"
#pragma once

class AAA
{
public:
    std::string strX;
    std::string strY;
};
19
Kevin Johnsrude

En plus des protections d'inclusion suggérées, vous devez déplacer #include "stdafx.h" hors de l'en-tête. Mettez-le en haut du fichier cpp.

4
ScottMcP-MVP