Russian Qt Forum

Qt => Общие вопросы => Тема начата: gaara от Июль 07, 2009, 14:40



Название: request is ambiguous
Отправлено: gaara от Июль 07, 2009, 14:40
подскажите, плиз

такая конструкция

Код:
ContactViewItem *cvi;
...
ContactViewItem *cvt = cvi->parent();
вызывает такую ошибку..
Цитировать
contactview.cpp:3054: error: request for member `parent' is ambiguous
c:/Qt/include/Qt3Support/../../src/qt3support/itemviews/q3listview.h:142: error:
 candidates are: Q3ListViewItem* Q3ListViewItem::parent() const
c:/Qt/include/QtCore/../../src/corelib/kernel/qobject.h:243: error:
    QObject* QObject::parent() const
суть ошибки я понимаю, компилятор не может определить какую именно parent ему нужно использовать.. нужно как-то вручную указать ему.. подскажите, как это делается?


Название: Re: request is ambiguous
Отправлено: pastor от Июль 07, 2009, 15:25
Покажи определение ContactViewItem. Если он наследован только от Q3ListViewItem, то такой ситуации быть не должно.


Название: Re: request is ambiguous
Отправлено: Alex Custov от Июль 07, 2009, 15:27
виновато множественное наследование, в результате которого в наследника приходит два метода с одинаковыми сигнатурами. Решение:

Код
C++ (Qt)
ContactViewItem *cvt = cvi->QObject::parent();
 

Код
C++ (Qt)
ContactViewItem *cvt = cvi->Q3ListViewItem::parent();
 


Название: Re: request is ambiguous
Отправлено: gaara от Июль 07, 2009, 16:06
так пробовал, но не работает.. пишет, что не может привести ContacViewItem к Q3ListViewItem

сделал так

Код:
public:
    ContactViewItem* ContactViewItem::parentCVI();

....

ContactViewItem* ContactViewItem::parentCVI()
{
ContactViewItem *item = (ContactViewItem *)Q3ListViewItem::parent();
return item;
}