Russian Qt Forum
Ноябрь 23, 2024, 22:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Cannot convert  (Прочитано 4126 раз)
Xenom
Гость
« : Декабрь 11, 2017, 20:53 »

Цитировать
cannot convert 'Circle*' to 'QFrame::Shape*' in initialization
         Shape *shape = new Circle();
Код:
class Shape : public QWidget
{
    Q_OBJECT
public:
    Shape(int = 0, int = 0, QWidget *p = nullptr);
    virtual ~Shape();
...
}
Код:
class Circle
        : public Shape
{
public:
    Circle(int = 0, int = 0, int = 25);
    Circle(QPoint , int = 25);
    Circle(Circle *);
    virtual ~Circle();
...
}

P.S. Компилятор gcc
« Последнее редактирование: Декабрь 12, 2017, 13:11 от Xenom » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Декабрь 11, 2017, 21:06 »

- отсутствует Q_OBJECT в Circle, возможно дело в этом
- сообщение об ошибке какое-то странное: упоминает QFram (QFrame?), хотя Shape наследуется от QWidget
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Xenom
Гость
« Ответ #2 : Декабрь 11, 2017, 21:15 »

-Добавил Q_OBJECT, запустил qmake, проблема осталась
-QFrame
Записан
Xenom
Гость
« Ответ #3 : Декабрь 11, 2017, 21:25 »

Наверно это связоно с тем, что я создаю Circle в mousePressEvent, так как попробовал так же создать в конструкторе MainWindow там без ошибок.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Декабрь 11, 2017, 23:10 »

значит надо показать больше кода, как минимум этот mousePressEvent
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Декабрь 12, 2017, 09:40 »

А что за QFram? Может классы объявлены в разных namespace(ах) ?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Декабрь 12, 2017, 09:44 »

В QFrame есть свой тип Shape, он доступен всем наследникам этого класса, а их не мало.
Или переименуйте класс Shape, или поместите его в свой namespace и указывайте его, или показывайте компилятору.
Сейчас можно указатель компилятору, что Shape внешний класс:
Код
C++ (Qt)
::Shape *shape = new Circle();
 
Записан
Xenom
Гость
« Ответ #7 : Декабрь 12, 2017, 13:17 »

Спасибо, переименовал класс помогло.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.144 секунд. Запросов: 23.