तो मैं this article about type erasure पढ़ रहा था। लेकिन उस लेख में कोड आंशिक रूप से गलत लगता है, उदाहरण के लिए:सी ++ में टाइप एरर क्या है?
template <typename T>
class AnimalWrapper : public MyAnimal
{
const T &m_animal;
public:
AnimalWrapper(const T &animal)
: m_animal(animal)
{ }
const char *see() const { return m_animal.see(); }
const char *say() const { return m_animal.say(); }
};
द्वारा
void pullTheString()
{
MyAnimal *animals[] =
{
new AnimalWrapper(Cow()), /* oO , isn't template argument missing? */
....
};
}
पीछा इन गलतियों मुझे किसी भी लेख में आगे पढ़ने से हतोत्साहित किया।
वैसे भी; क्या कोई भी सिखा सकता है कि सरल उदाहरणों के साथ सी ++ में किस तरह का मिटाना है?
मैं यह समझने के लिए जानना चाहता था कि कैसे std::function
काम करता है, लेकिन मेरे सिर को इसके आसपास नहीं मिल सका।
संबंधित/शिकार: http://stackoverflow.com/questions/5450159/type-erasure-techniques – NathanOliver
आप या तो '' गुजरती हैं, या उपयोग करने के लिए एक समारोह है कि 'deduces T' और' ' गुजरता है की जरूरत है। हां, 'टेम्पलेट माईएनिमल * रैपएनिमल (टी कॉन्स्ट एंड टी) {नया AnimalWrapper (टी);} ', और' व्रपएनिमल 'के साथ' नया AnimalWrapper 'को प्रतिस्थापित करें। –
Yakk
@NathanOliver उस प्रश्न में ओपी पहले से ही टाइप एरर की बुनियादी अवधारणाओं को जानता है। –