crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Конструктор не существует, но работает..., Объясните, как такое может быть?
Darvin
  опции профиля:
сообщение 3.12.2007, 8:06
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


Создаю экземпляр картинки и добавляю его в сцену
item = new QGraphicsPixmapItem("FileName.jpg");
scene.addItem(item);

Как видно, я использую конструктор вида
QGraphicsPixmapItem(const QString& path);
и он работает правильно, картинка загружается и добавляется!

Однако, в исходниках нахожу вот такое определение класса QGraphicsPixmapItem, в нем нет такого конструктора.
В Ассистенте тоже самое.

class Q_GUI_EXPORT QGraphicsPixmapItem : public QGraphicsItem
{
public:
    enum ShapeMode {
        MaskShape,
        BoundingRectShape,
        HeuristicMaskShape
    };

    QGraphicsPixmapItem(QGraphicsItem *parent = 0
#ifndef Q_QDOC
                        // obsolete argument
                        , QGraphicsScene *scene = 0
#endif
        );
    QGraphicsPixmapItem(const QPixmap &pixmap, QGraphicsItem *parent = 0
#ifndef Q_QDOC
                        // obsolete argument
                        , QGraphicsScene *scene = 0
#endif
        );


Объясните, что это за колдунство?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Admin
  опции профиля:
сообщение 3.12.2007, 8:42
Сообщение #2


Администратор
****

Группа: Администратор
Сообщений: 646
Регистрация: 9.10.2007
Из: crossplatform.ru
Пользователь №: 1

Спасибо сказали: 17 раз(а)




Репутация:   2  


Может быть твоя запись:
QGraphicsPixmapItem("FileName.jpg");
неявно преобразуется к следующей:
QGraphicsPixmapItem( QPixmap("FileName.jpg"));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Darvin
  опции профиля:
сообщение 3.12.2007, 10:00
Сообщение #3


Студент
*

Группа: Новичок
Сообщений: 36
Регистрация: 30.11.2007
Пользователь №: 30

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Admin @ 3.12.2007, 8:42) *
Может быть твоя запись неявно преобразуется к следующей:

Это как? Где то по любому должно быть явное определение.


Цитата(Admin @ 3.12.2007, 8:42) *
А ты поставь точку останова на item = new QGraphicsPixmapItem("FileName.jpg"); и посмотри в какой конструктор прыгнешь...

Пока не смог настроить отладчик под Eclipse.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 3.12.2007, 10:11
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Darvin @ 3.12.2007, 10:00) *
Пока не смог настроить отладчик под Eclipse.
В том-то все и дело, что у меня под студией это даже не компилиться. :)
Пишу QGraphicsPixmapItem *item = new QGraphicsPixmapItem( "FileName.jpg");, на что мне компилятор говорит:
Цитата
error C2664: 'QGraphicsPixmapItem::QGraphicsPixmapItem(QGraphicsItem *,QGraphicsScene *)' : cannot convert parameter 1 from 'const char [13]' to 'QGraphicsItem *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Если же явно указать, то все ок, видимо в Eclipse есть неявное преобразование какое или ты сам его делаешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Darvin   Конструктор не существует, но работает...   3.12.2007, 8:06
- - Admin   Может быть твоя запись: QGraphicsPixmapItem(...   3.12.2007, 8:42
|- - Darvin   Цитата(Admin @ 3.12.2007, 8:42) Может быт...   3.12.2007, 10:00
|- - ViGOur   Цитата(Darvin @ 3.12.2007, 10:00) Пока не...   3.12.2007, 10:11
|- - Darvin   Цитата(ViGOur @ 3.12.2007, 10:11) Цитата(...   3.12.2007, 10:22
- - ViGOur   А ты поставь точку останова на item = new QGraphic...   3.12.2007, 8:59
- - ViGOur   То что ты привел, компилится и в дебагере видно, ч...   3.12.2007, 10:35
|- - Darvin   Цитата(ViGOur @ 3.12.2007, 10:35) То что ...   3.12.2007, 10:47
- - ViGOur   Вот пример неявного преобразования, не знаю наскол...   3.12.2007, 10:59
|- - Darvin   Вот еще бы понять, по каким правилам C++ это проис...   3.12.2007, 11:10
|- - ViGOur   Цитата(Darvin @ 3.12.2007, 11:10) Вот еще...   3.12.2007, 11:12
|- - Darvin   Цитата(ViGOur @ 3.12.2007, 11:12) преобра...   3.12.2007, 11:20
- - ViGOur   Я пытаюсь найти описание данного преобразования, п...   3.12.2007, 11:23
- - Andrew Selivanov   Цитата(Darvin @ 3.12.2007, 11:00) Цитата(...   3.12.2007, 11:25
- - ViGOur   Я создал отдельную тему в разделе Техника программ...   3.12.2007, 11:36


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.1.2025, 12:19