2013-02-28 5 views
2

Я запутался в использовании указателей и ссылок, и у меня возникла небольшая проблема.Преобразование из QString * в QString &

Я получил функцию:

bool myObject::isFlag(QString &pArgument) const { } 

И я использую его:

QStringList::const_iterator myQStringList.begin(); 

[...] && !isFlag(QString(*(myVar + 1))) 

Я получил сообщение об ошибке для

QString(*(myVar + 1))) 

, который не определяет Täht никакой функции соответствия найден.

Однако я уверен, что это должно быть хорошо ... знаете ли вы, что может быть проблемой?

+0

Попробуйте создать временный объект, но создайте 'QString (* (myVar + 1))' перед вашим выражением. –

ответ

4

В этом вызове

isFlag(QString(*(myVar + 1))) 

аргумент является временным QString. Вы не можете связывать не-константные ссылки на временные, то вам нужно будет изменить isFlag принять константную ссылку:

bool myObject::isFlag(const QString &pArgument) const { 

Если вы не можете использовать const ссылки, то вы должны создать QString, а затем передать его в функция:

QString qs(*(myVar + 1)); 
isFlag(qs); 

Все вышесказанное предполагает, что QString может быть сконструирована из *(myvar +1), что, опять же, временный.

+0

Ницца. Это сработало. Большое спасибо ! – 2013-02-28 11:43:30

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