crossplatform.ru

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


  Ответ в Ошибка вида "no matching ... ClassName*&"
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 26.1.2010, 15:15
 
Цитата(Litkevich Yuriy @ 26.1.2010, 14:01) *
а const'ом он как отличит?

не вдаваясь в подробности, конструктры QString & QByteArray не заданы explicit. можно предположить что первый парметр компилятор желает преобразовать и не знает к чему к const QString& (хотя по-идее это случай неяного преобразования и должен работать) или к const QByteArray&. Если укажешь const по-идее преобразовывать нельзя и он оставит параметр в неизменном виде. соответственно подойдёт конструктор QSvgRenderer(const QString &filename, QObject *parent=0)

попробуй, может и получится.

П.С.
по крайней мере явно узнаешь проблема в первом или во втором параметре.
QGraphicsScene унаследован от QObject public`ом c макросом Q_OBJECT не видно на первый взгляд причин для проблем с преобразованием.
Litkevich Yuriy Дата 26.1.2010, 14:01
  сейчас уже не поробую переделал иначе. Ошибка эта вылезла после добавления сцены в качестве аргумента, сначала было просто:
rendererOn = new QSvgRenderer(filename); //объявлен: QSvgRenderer *rendererOn
и всё компилелось

Цитата(kwisp @ 25.1.2010, 21:22) *
не может без const различить эти два констуктора ?
QSvgRenderer(const QString &filename, QObject *parent=0);
QSvgRenderer(const QByteArray &contents, QObject *parent=0);
а const'ом он как отличит?
kwisp Дата 26.1.2010, 13:11
  значит остаётся только это:
Цитата(kwisp @ 25.1.2010, 18:22) *
еще может не может без const различить эти два констуктора ?
QSvgRenderer(const QString &filename, QObject *parent=0);
QSvgRenderer(const QByteArray &contents, QObject *parent=0);

попробуй
void SVGGraphics::setOnSVG(const QString & filename)
{
    QGraphicsScene *s = scene();
    rendererOn = new QSvgRenderer(filename, s); //объявлен: QSvgRenderer *rendererOn
}

так кстати и троли рекомендуют делать, да и имя файла ты в setOnSVG не меняешь так что const QString& в самый раз.
Litkevich Yuriy Дата 26.1.2010, 6:58
 
Цитата(kwisp @ 25.1.2010, 21:22) *
#include<QGraphicsScene>
присутствует?
да
kwisp Дата 25.1.2010, 18:22
  а
#include<QGraphicsScene>
присутствует?
еще может не может без const различить эти два констуктора ?
QSvgRenderer(const QString &filename, QObject *parent=0);
QSvgRenderer(const QByteArray &contents, QObject *parent=0);
Litkevich Yuriy Дата 16.1.2010, 17:20
  Есть такой код:
void SVGGraphics::setOnSVG(QString filename)
{
    QGraphicsScene *s = scene();
    rendererOn = new QSvgRenderer(filename, s); //объявлен: QSvgRenderer *rendererOn
}
на второй строчке получаю ошибку:
Цитата
error: no matching function for call to `QSvgRenderer::QSvgRenderer(QString&, QGraphicsScene*&)'
.../svg/qsvgrenderer.h:60: note: candidates are: QSvgRenderer::QSvgRenderer(const QSvgRenderer&)
.../src/svg/qsvgrenderer.h:69: note: QSvgRenderer::QSvgRenderer(const QByteArray&, QObject*)
.../src/svg/qsvgrenderer.h:68: note: QSvgRenderer::QSvgRenderer(const QString&, QObject*)
.../src/svg/qsvgrenderer.h:67: note: QSvgRenderer::QSvgRenderer(QObject*)
немогу понять почему компиллер пишет, то что я выделил жирным. Ведь я передаю указатель. А QGraphicsScene является наследником QObject.
Т.е. поидее должен вызываться конструктор:
QSvgRenderer::QSvgRenderer(const QString&, QObject*)

В чём проблема?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 4.12.2024, 14:43