2013-02-28 2 views
0

Недавно я прочитал какой-то код, чтобы узнать больше о программировании на C++, и я сталкиваюсь с чем-то как-то немного странным.Множественное виртуальное наследование с общим базовым классом

я получил объявление класса:

class myClass : public QObject, public virtual myObject::myOtherObject::myInterface { 
    Q_OBJECT 
    public: [...] 
} 

И я получил следующее сообщение об ошибке при компиляции:

error: expected class-name before '{' token 
error: myInterface is not a member of 'myObject::myOtherObject' 

Является ли это ошибка синтаксиса где-нибудь? Я не могу понять, в чем проблема ...

Вы случайно не знаете, что может быть решением?

Большое спасибо :)

EDIT: Интерфейс не имеет никакого значения, и раствор в другом месте. Тем не менее ответы помогли.

+5

Как мы узнаем? Вы не указали нам объявление myObject, myOtherObject, myInterface. – us2012

+1

Отсутствует '# include', содержащий' myOtherObject'? –

ответ

0

Is this a syntax error somewhere?

Нет, ваш код будет синтаксическим. Ниже компилируется нормально, без ошибок:

#include <QObject> 

namespace myObject { 
    namespace myOtherObject { 
    class myInterface { 
    }; 
    } 
} 

class myClass : public QObject, public virtual myObject::myOtherObject::myInterface { 
    Q_OBJECT 
    public: 
}; 

Итак, вам нужно проверить, где определяется ваш myInterface класс и убедитесь, что он правильно включен.

+0

Хм, да, я поработаю над этим. Я вернусь, когда у меня появятся некоторые результаты. – 2013-02-28 15:36:24

+0

Хорошо, я обнаружил, что ... Интерфейс, используемый здесь, не имеет значения. Ничего, и жаль неприятностей, кстати, ваш ответ был замечательным. – 2013-03-08 13:42:32

Смежные вопросы