2012-08-28 15 views
7

मैं एक टेम्पलेटेड कक्षा में परिपत्र निर्भरता के साथ समस्या में भाग लेता हूं।सी ++ - परिपत्र निर्भरता (टेम्पलेटेड बेस क्लास में आंतरिक प्रकार के उप-वर्ग का उपयोग करके)

template <typename T> struct A 
{ 
    typedef typename T::C D; 
    //typename T::C c; 
}; 

struct B : public A<B> 
{ 
    struct C {}; 
}; 

जब मैं बी का दृष्टांत करने की कोशिश, मैं एक संकलक त्रुटि मिलती है: 'सी' है 'बी' (MSVC) या अधूरा प्रकार का अमान्य उपयोग 'का सदस्य नहीं वहाँ एक कोड नमूना है संरचना बी ' (जीसीसी)।
इसे काम करने के लिए नमूना बदलने का सबसे अच्छा तरीका क्या है?

+3

आप नहीं कर सकते। उस समस्या का थोड़ा और पूरा उदाहरण प्रदान करें जिसे आप हल करने का प्रयास कर रहे हैं, और हम कोड को पुन: सक्रिय करने पर विचार कर सकते हैं। –

उत्तर

6
struct B_base { struct C {}; }; 
strucr B : A<B_base>, B_base { }; 
+0

उपयोगी नहीं हो सकता है यदि 'ए' एक सीआरटीपी टेम्पलेट है जो सदस्य घोषणाओं में पैरामीटर प्रकार' टी' डालता है। उस स्थिति में, आपको शायद 'सी' एक अतिरिक्त टेम्पलेट पैरामीटर बनाना होगा। – aschepler

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