निम्न कोड संकलित नहीं कर सकता - अविकसित पहचानकर्ता का उपयोग। मैं संकलन के लिए जीसीसी और एक्सकोड का उपयोग करता हूं।टेम्पलेट्स और विरासत के साथ सी ++ में अविकसित पहचानकर्ता का उपयोग
सबकुछ एक ही शीर्षलेख फ़ाइल में है।
include "MyArray.h"
template <typename T>
class MyBase {
public:
MyBase();
virtual ~MyBase();
void addStuff(T* someStuff);
protected:
MyArray<T*> stuff;
};
template <typename T>
MyBase<T>::MyBase() {}
template <typename T>
MyBase<T>::~MyBase() {}
template <typename T>
void MyBase<T>::addStuff(T* someStuff) {
stuff.add(someStuff);
}
// ---------------------
template <typename T>
class MyDerived : public MyBase<T> {
public:
MyDerived();
virtual ~MyDerived();
virtual void doSomething();
};
template <typename T>
MyDerived<T>::MyDerived() {}
template <typename T>
MyDerived<T>::~MyDerived() {}
template <typename T>
void MyDerived<T>::doSomething() {
T* thingy = new T();
addStuff(thingy); //here's the compile error. addStuff is not declared.
}
क्या किसी के पास कोई स्पष्टीकरण है? अग्रिम धन्यवाद!
@jua addStuff विधि आह्वान करने के लिए इस सूचक आपको निश्चित रूप से अयोग्य नामों के बारे में शापित आश्रित बेस लुकअप नियमों को देखने की आवश्यकता है। आप जो कहते हैं वह गलत है। एक अनुरूप कंपेलर की आवश्यकता होगी। –