में इंटरफेस को कार्यान्वित करना मैं आमतौर पर सी # में प्रोग्राम करता हूं लेकिन सी ++ का थोड़ा सा प्रयास करने की कोशिश कर रहा हूं और कुछ हद तक सी ++ में इंटरफेस को कार्यान्वित करने की कोशिश कर रहा हूं।सी ++
सी # में मैं कुछ इस तरह करते हैं:
class Base<T>
{
public void DoSomething(T value)
{
// Do something here
}
}
interface IDoubleDoSomething
{
void DoSomething(double value);
}
class Foo : Base<double>, IDoubleDoSomething
{
}
C++ में मैं इसे इस तरह से क्रियान्वित किया है:
template <class T>
class Base
{
public:
virtual void DoSomething(T value)
{
// Do something here
}
};
class IDoubleDoSomething
{
public:
virtual void DoSomething(double value) = 0;
};
class Foo : public Base<double>, public IDoubleDoSomething
{
};
समस्या यह है कि मैं फू का दृष्टांत नहीं कर सकते क्योंकि यह है अमूर्त (DoSomething लागू नहीं करता है)। मुझे एहसास है कि मैं DoSomething को कार्यान्वित कर सकता हूं और बस बेस पर विधि को कॉल कर सकता हूं लेकिन मुझे उम्मीद थी कि ऐसा करने का एक बेहतर तरीका है। मेरे पास अन्य वर्ग हैं जो विभिन्न डेटा प्रकारों के आधार पर आधार से प्राप्त होते हैं और मेरे पास अन्य कक्षाएं हैं जो IDoubleDo कुछ से प्राप्त होती हैं जो बेस का उपयोग नहीं करती हैं।
किसी भी मदद की सराहना की।
क्या इस के साथ इतना बुरा है, और किस तरह से यह "बेहतर" हो सकता है? –
मुझे लगता है कि "बेहतर" सी # संस्करण की तरह अभिनय करेगा जहां 'फू' बेस से विधि प्राप्त करता है और किसी भी कार्यान्वयन की आवश्यकता नहीं होती है। मुझे लगता है कि फू में बेस से प्रत्येक विधि के कार्यान्वयन के साथ वास्तव में कुछ भी बुरा नहीं है, यह सिर्फ गन्दा लगता है। – Clueless
यह गन्दा है, लेकिन मुझे कभी भी बेहतर तरीका नहीं मिला है :( –