विफल रहता है मेरे पास बेस क्लास और व्युत्पन्न कक्षा है। प्रत्येक वर्ग में एक .h फ़ाइल और एक .cpp फ़ाइल होती है।गतिशील_कास्ट
मैं निम्नलिखित कोड में व्युत्पन्न वर्ग के लिए आधार वर्ग वस्तु के dynamic_cast कर रहा हूँ:
ज फ़ाइलें:
class Base
{
public:
Base();
virtual ~Base();
};
class Derived : public Base
{
public:
Derived(){};
void foo();
};
class Another
{
public:
Another(){};
void bar(Base* pointerToBaseObject);
};
cpp फ़ाइलें:
Base::Base()
{
//do something....
}
Base::~Base()
{
//do something....
}
void Derived::foo()
{
Another a;
a.bar(this);
}
void Another::bar(Base* pointerToBaseObject)
{
dynamic_cast<Derived*>(pointerToBaseObject)
}
कुछ अजीब कारण से , कास्टिंग विफल रहता है (पूर्ण लौटाता है)। हालांकि, कास्टिंग सफल होता है अगर मैं व्युत्पन्न वर्ग के कन्स्ट्रक्टर के कार्यान्वयन को .h से .cpp फ़ाइल में स्थानांतरित करता हूं।
इसका कारण क्या हो सकता है?
कंपाइलर जीसीसी 3.1 है, लिनक्स-एसयूएसई पर। बीटीडब्लू, मैं इस मंच पर केवल इस व्यवहार को देखता हूं, और वही कोड विजुअल स्टूडियो में ठीक काम करता है।
शायद यह जीसीसी 3.1 के साथ एक बग है के साथ ठीक काम करता है? "-फडम्प-क्लास-पदानुक्रम" विकल्प आज़माएं और देखें कि यह आपके दो वर्गों के लिए एक vtable बनाता है –