C # में विकसित होने में कुछ समय बिताने के बाद, मैंने देखा कि यदि आप एक इंटरफ़ेस के रूप में इसका उपयोग करने के उद्देश्य से एक अमूर्त वर्ग की घोषणा करते हैं, तो आप इस अमूर्त वर्ग के एक सदिश को बच्चों की कक्षाओं के उदाहरणों को संग्रहीत करने के लिए तुरंत नहीं कर सकते।
#pragma once
#include <iostream>
#include <vector>
using namespace std;
class IFunnyInterface
{
public:
virtual void IamFunny() = 0;
};
class FunnyImpl: IFunnyInterface
{
public:
virtual void IamFunny()
{
cout << "<INSERT JOKE HERE>";
}
};
class FunnyContainer
{
private:
std::vector <IFunnyInterface> funnyItems;
};
सार वर्ग के वेक्टर की घोषणा करने वाली लाइन MS VS2005 में इस त्रुटि का कारण बनती है:
error C2259: 'IFunnyInterface' : cannot instantiate abstract class
मुझे एक स्पष्ट हल दिखाई देता है, जिसे निम्नलिखित के साथ IFunnyInterface को बदलना है:
class IFunnyInterface
{
public:
virtual void IamFunny()
{
throw new std::exception("not implemented");
}
};
क्या यह स्वीकार्य वर्कअराउंड C ++ वार है? यदि नहीं, तो क्या कोई तृतीय पक्ष पुस्तकालय जैसा बढ़ावा है जो मुझे इसके आसपास जाने में मदद कर सकता है?
इसे पढ़ने के लिए आपका धन्यवाद !
एंथोनी