2011-08-04 17 views
8

मैं विभिन्न सीपीपी फ़ाइलों में एक वर्ग को लागू करने की कोशिश कर रहा हूं। मैं समझता हूं कि यदि सदस्य कार्य स्वतंत्र हैं तो सी ++ में करना एक वैध बात है। हालांकि सदस्य समारोह में से एक इस तरह इस मामले में के रूप में किसी अन्य सदस्य फ़ंक्शन का उपयोग करता:एकाधिक फ़ाइलों में कक्षा कार्यान्वयन

function1.cpp

#include "myclass.h" 
void myclass::function1() 
{ 
    function2(); 
} 

function2.cpp में

#include "myclass.h" 
void myclass::function2() 
{ 
.... 
} 

मैं अपरिभाषित संदर्भ की एक त्रुटि प्राप्त होगी कार्य करने के लिए 2। यह या तो इस सूचक को जोड़कर काम नहीं करता है। क्या मुझे इसे function1.cpp में किसी तरह से घोषित करने की आवश्यकता है? धन्यवाद ~

हेडर फ़ाइल में दोनों कार्यों की घोषणा शामिल है। यह तब काम करता है जब function1 और फ़ंक्शन 2 एक ही फ़ाइल में होते हैं लेकिन जब मैं उन्हें अलग नहीं करता हूं। मुझे यह भी विश्वास है कि मैंने परियोजना में दोनों सीपीपी जोड़े हैं। मैं क्यूटी निर्माता बीटीडब्ल्यू का उपयोग कर रहा हूँ।

+0

क्या आपने myclass.h में function1() और function2() दोनों घोषित किए हैं? – nobody

+0

आपको हेडर फ़ाइल (myclass.h) में दोनों फ़ंक्शंस की फ़ंक्शन घोषणाएं करने की आवश्यकता है। – Sujoy

+0

क्या आप अपनी myclass.h फ़ाइल जोड़ सकते हैं? शायद कक्षा घोषणा के साथ कुछ त्रुटि - उन परिस्थितियों के कारण ठीक है, और त्रुटि यहां नहीं होनी चाहिए – Olympian

उत्तर

11

जब तक myclass.h में सदस्य कार्यों की घोषणाओं के साथ कक्षा की परिभाषा शामिल है, तो आपको ठीक होना चाहिए। उदाहरण:

//MyClass.h 
#ifndef XXXXXXXX 
#define XXXXXXXX 
class MyClass 
{ 
    public: 
    void f1(); 
    void f2(); 
}; 
#endif 

//MyClass1.cpp 
#include "MyClass.h" 
void MyClass::f1() 
{ 
}; 

//MyClass2.cpp 
#include "MyClass.h" 
void MyClass::f2() 
{ 
    f1(); //OK 
} 
+0

हाय धन्यवाद। मुझे विश्वास है कि मैंने यही किया है। फिर भी संकलन नहीं करेंगे। यह ठीक काम करता है जब दो फ़ंक्शन एक ही फ़ाइल में होते हैं। मैं क्यूटी के साथ काम कर रहा हूं और दोनों फाइलें परियोजना में सूचीबद्ध हैं। – Bill

1

यह काम करना चाहिए। यदि आपको एक लिंकर त्रुटि मिलती है, तो सुनिश्चित करें कि आप अपनी सीपीपी फाइलों को संकलित करते हैं, यही कारण है कि आपकी त्रुटि सबसे अधिक हो सकती है।

0

सबकुछ ठीक लगता है। आपकी निर्माण प्रक्रिया में कुछ गड़बड़ हो सकती है। आपको ऑब्जेक्ट फ़ाइलों में दो .cpp फ़ाइलों (-c विकल्प का उपयोग करके) संकलित करना चाहिए और अगले चरण में उन्हें एक साथ लिंक करना चाहिए।

संबंधित मुद्दे