Преобразование из QString* в QString&

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

У меня есть функция:

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

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

QStringList::const_iterator myQStringList.begin();

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

Я получил ошибку для

QString( *(myVar + 1)))

который указывает, что соответствующая функция не найдена.

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


person Community    schedule 28.02.2013    source источник
comment
Попробуйте не создавать временный объект, а создайте QString( *(myVar + 1)) перед вашим выражением.   -  person bash.d    schedule 28.02.2013


Ответы (1)


В этом звонке

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

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

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

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

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

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

person juanchopanza    schedule 28.02.2013