2014-09-07 11 views
10

हेडर फाइल में से एक है -त्रुटि C2011: '': 'इस प्रकार वर्ग' प्रकार परिभाषा

#include "stdafx.h" 

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

जब मैं परियोजना को संकलित करने का प्रयास करें, मैं

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

कहीं त्रुटि मिलती है अन्यथा मेरे कार्यक्रम में मैंने कक्षा AAA को फिर से परिभाषित किया है। मैं यह कैसे तय करुं?

+6

आप उपयोग करने की आवश्यकता की तरह गार्ड शामिल हैं। – juanchopanza

उत्तर

29

कोड के लिए कुछ इस तरह बदल दें:

#ifndef AAA_HEADER 
#define AAA_HEADER 

#include "stdafx.h" 

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

#endif 

आप इस हेडर फाइल एक बार कुछ स्रोत फ़ाइल की तुलना में अधिक शामिल हैं, तो शामिल गार्ड केवल एक बार वर्ग उत्पन्न करने के लिए संकलक के लिए मजबूर तो यह class redefinition त्रुटि नहीं होगा ।

+0

AAA_HEADER AAA.h फ़ाइल है? – user3164272

+2

फ़ाइल की पहचान करने के लिए AAA_HEADER केवल अद्वितीय स्ट्रिंग है। Http://stackoverflow.com/questions/8020113/c-include-guards यहां गार्ड शामिल करने के बारे में पढ़ें – Ashot

2

सुझाए गए सुझावों के अलावा आपको शीर्षलेख से #include "stdafx.h" को स्थानांतरित करने की आवश्यकता है। इसे सीपीपी फ़ाइल के शीर्ष पर रखें।

15

अपने AAA.h फ़ाइल के शीर्ष पर

#pragma once 

जोड़ना समस्या का ध्यान रखना चाहिए।

इस

#include "stdafx.h" 
#pragma once 
class AAA 
{ 
public: 
    std::string strX; 
    std::string strY; 
}; 
संबंधित मुद्दे