मुझे QObject की वजह से कई विरासत के बारे में QT के साथ समस्या हो रही है। मुझे पता है कि बहुत से अन्य लोगों में एक ही समस्या है लेकिन मुझे नहीं पता कि मुझे इसे कैसे ठीक करना चाहिए।क्यूटी एकाधिक विरासत और संकेत
class NavigatableItem : public QObject
{
Q_OBJECT
signals:
void deselected();
void selected();
void activated();
};
class Button : public NavigatableItem, public QToolButton
{
Q_OBJECT
...
}
class MainMenuOption : public Button
{
Q_OBJECT
...
}
जब मैं ऐसा करते हैं
MainMenuOption* messages = new MainMenuOption();
connect(messages, SIGNAL(selected()), SLOT(onMenuOptionSelected()))
मैं त्रुटि मिल जाएगा:
QObject' is an ambiguous base of 'MainMenuOption'
कारण है कि मैं क्योंकि संकेतों के QObject से NavigatableItem enherit करते हैं। क्या इसे करने का कोई तरीका है?
संपादित करें:
प्रत्येक inheritence घोषणा करने के लिए आभासी जोड़ा जा रहा है, अभी भी मुझे एक ही त्रुटि देता है:
class NavigatableItem : public virtual QObject
class Button : public virtual NavigatableItem, public virtual QToolButton
class MainMenuOption : public virtual Button
यहां तक कि एक 'स्वच्छ सब', 'चलाने qmake' और 'निर्माण' सभी के बाद ।
आप एक से अधिक QObject से विरासत नहीं कर सकते उपवर्गों। उनमें से केवल एक QObject हो सकता है, और यह सूची में पहला होना चाहिए। –
उन 'moc_ * ',' * .obj' फ़ाइलों को हटाने का प्रयास करें और सभी को पुनर्निर्माण करें .. – liaK
अद्यतन प्रश्न देखें। पुनर्निर्माण ने इसे ठीक नहीं किया। – RvdK