के आधार पर एक फ़ंक्शन ओवरलोड करना इस तरह के बहुत सारे SO प्रश्न हैं, लेकिन मैं ठीक से नहीं ढूंढ पाया जो मैं ढूंढ रहा था। मुझे खेद है अगर यह एक डुप्लिकेट है।सी ++ share_ptr व्युत्पन्न कक्षा
class Son : public Parent { ... };
class Daughter : public Parent { ... };
मैं तो दो shared_ptr
बेस कक्षा में ऐलान करते हैं और उन्हें व्युत्पन्न वर्ग से प्रत्येक के लिए एक shared_ptr
साथ दृष्टांत:
मैं एक Parent
वर्ग और दो व्युत्पन्न वर्ग है जो इसे से विरासत है
shared_ptr<Parent> son = shared_ptr<Son>(new Son());
shared_ptr<Parent> daughter = shared_ptr<Daughter>(new Daughter());
आखिरकार, मैं एक कक्षा चाहता हूं जो shared_ptr<Parent>
पर आधारित है जो व्युत्पन्न कक्षाओं के आधार पर इंगित करती है।
class Director {
public:
void process(shared_ptr<Son> son);
void process(shared_ptr<Daughter> daughter);
...
};
तो मैं निम्नलिखित कोड लिखने में सक्षम होना चाहते हैं: मैं इस प्रभाव को प्राप्त करने के लिए अधिक भार समारोह का उपयोग कर सकते सवाल यह है कि अभी
shared_ptr<Parent> son = shared_ptr<Son>(new Son());
shared_ptr<Parent> daughter = shared_ptr<Daughter>(new Daughter());
Director director;
director.process(son);
director.process(daughter);
मैं क्या करने वाले कर रहा हूँ (जो मैं से बचने के लिए चाहते हैं):
director.process_son(boost::shared_polymorphic_downcast<Son>(son));
director.process_daughter(boost::shared_polymorphic_downcast<Daughter>(daughter));