2010-04-24 12 views
5

मैं एक नहीं बल्कि विदेशी C++ नाम स्थान समस्या पर ठोकर खाई के बीच नाम स्थान संघर्षसी ++:</p> <p>गाढ़ा उदाहरण: निर्वासन 'सी' और वर्ग के सदस्य

extern "C" { 
void solve(lprec * lp); 
} 

class A { 
public: 
    lprec * lp; 
    void solve(int foo); 
} 

void A::solve(int foo) 
{ 
    solve(lp); 
} 

मैं ग समारोह मेरी सी में हल कॉल करना चाहते हैं ++ सदस्य समारोह ए :: हल करें। कंपाइलर मेरे इरादे से खुश नहीं है:

error C2664: 'lp_solve_ilp::solve' : cannot convert parameter 1 from 'lprec *' to 'int' 

क्या कोई ऐसा हल है जिसके साथ मैं हल फ़ंक्शन को उपसर्ग कर सकता हूं? सी :: हल

उत्तर

9

काम नहीं करता है ग्लोबल नेम स्पेस में एक समारोह कॉल करने के लिए, का उपयोग करें:

::solve(lp); 

यह इसलिए आवश्यक है समारोह extern "C" है या नहीं।

2

सी कार्यों ग्लोबल नेम स्पेस में हैं। तो

::solve(lp) 
1

सीधे शब्दों में ::solve(lp) प्रयास करें। ध्यान दें कि आपको अपनी कक्षा घोषणा के बाद अर्धविराम की भी आवश्यकता है।

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