Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

error C2011: '' : 'class' type redefinition

One of the header files is as follows -

#include "stdafx.h"

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

When I try to compile the project, I get the error

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

Nowhere else in my program have I redefined the class AAA. How do I fix this?

like image 373
user3164272 Avatar asked Sep 07 '14 19:09

user3164272


3 Answers

Change to code to something like this:

#ifndef AAA_HEADER
#define AAA_HEADER

#include "stdafx.h"

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

#endif

If you include this header file more than once in some source file, include guards will force compiler to generate class only once so it will not give class redefinition error.

like image 116
Ashot Avatar answered Nov 02 '22 17:11

Ashot


Adding

#pragma once

to the top of your AAA.h file should take care of the problem.

like this

#include "stdafx.h"
#pragma once

class AAA
{
public:
    std::string strX;
    std::string strY;
};
like image 29
empty Avatar answered Nov 02 '22 16:11

empty


In addition to the suggested include guards you need to move #include "stdafx.h" out of the header. Put it at the top of the cpp file.

like image 5
ScottMcP-MVP Avatar answered Nov 02 '22 16:11

ScottMcP-MVP