2011-08-22 25 views
23

मैं एक सी पुस्तकालय को सी ++ कक्षा में लपेटना चाहता हूं। मेरे सी ++ वर्ग के लिए मैं भी इन सी फ़ंक्शन द्वारा उपयोग की जाने वाली वही घोषणा करना चाहता हूं: क्या ऐसा करना संभव है?एक ही घोषणा के साथ एक वैश्विक विधि को एक ही घोषणा के साथ कॉल करना

उदाहरण के लिए मेरे पास नीचे मामला है सी-फ़ंक्शन से सी-फ़ंक्शन को अलग करना कैसे संभव होगा? मैं निश्चित रूप से सी को कॉल करना चाहता हूं।

extern int my_foo(int val); // 

class MyClass{ 
    public: 
    int my_foo(int val){ 
      // what to write here to use 
      // the C functions? 
      // If I call my_foo(val) it will call 
      // the class function not the global one 
    } 
} 

उत्तर

40

उपयोग scope resolution operator :::

int my_foo(int val){ 
    // Call the global function 'my_foo' 
    return ::my_foo(val); 
} 
+3

आप अपने कोड उदाहरण में स्कोप रिज़ॉल्यूशन ऑपरेटर का उपयोग करना भूल गए हैं। आपके पास अब एक रिकर्सिव फ़ंक्शन कॉल है जो स्टैक ओवरफ्लो पर स्टैक ओवरफ्लो का कारण बनता है :) –

+0

@Als, Bo: * Sigh * धन्यवाद, मेरे बारे में मूर्खतापूर्ण। –

4
::my_foo(val); 

है कि यह करना चाहिए।

4

उपयोग योग्य नाम देखने

::my_foo(val); 

इस संकलक आप वैश्विक समारोह और नहीं स्थानीय समारोह कॉल करना चाहते हैं बताता है।