मैं एक सामान्य इंटरफेस के साथ विगेट्स का पूरा समूह प्रदान करने के लिए सी ++/क्यूटी के लिए कक्षाओं में मिश्रण का उपयोग करने की कोशिश कर रहा हूं। इंटरफ़ेस को इस तरह से परिभाषित किया गया है ताकि यदि इसे अन्य विजेट वर्गों के लिए बेस क्लास के रूप में परिभाषित किया गया हो, तो विजेट में स्वयं ही संकेत होंगे। यानी नीचे देखें।क्यूओब्जेक्ट एकाधिक विरासत
class SignalInterface: public QObject {
Q_OBJECT
public:
SignalInterface();
virtual ~SignalInterface();
signals:
void iconChanged(QIcon);
void titleChanged(QString);
}
class Widget1: public SignalInterface, QWidget{
public:
Widget1()
virtual ~Widget1()
// The Widget Should Inherit the signals
}
वर्ग पदानुक्रम समस्या स्पष्ट हो जाता है को देखते हुए, मैं एकाधिक विरासत में खतरनाक हीरा, जहां WIDGET1 QWidget से प्राप्त करना पर ठोकर खाई है, और SignalInterface, और जो दोनों QObject से विरासत। क्या इससे कोई समस्या आएगी?
हम जानते हैं कि QObject क्लास शुद्ध वर्चुअल (जो मामला नहीं है) में यह समस्या आसानी से हल की जा सकती है।
सम्भावित समाधान होगा
class Interface: public QWidget {
Q_OBJECT
signals:
void IconChanged(QIcon);
void titleChanged(QString);
}
class Widget1: public Interface {
}
यहां मुद्दा यह है कि मैं पहले से ही QWidget से विरासत कोड का बहुत कुछ है कि है, और उसके हैक करने दर्दनाक है कि में। वहाँ एक और तरीका है?
एक नज़र डालें: http://stackoverflow.com/questions/17943496/declare-abstract-signal-in-interface-class/17943699#17943699 –