[Qt-interest] Problem with passing reference parameters

Scott Aron Bloom Scott.Bloom at sabgroup.com
Sat Mar 7 01:27:21 CET 2009



> -----Original Message-----
> From: qt-interest-bounces at trolltech.com [mailto:qt-interest-
> bounces at trolltech.com] On Behalf Of Denton Vis
> Sent: Friday, March 06, 2009 3:57 PM
> To: qt-interest at trolltech.com
> Subject: [Qt-interest] Problem with passing reference parameters
> 
> Hi guys,
> I do realize that this may be more of a C++ question. But as I have
> encountered it while working with Qt, I will ask it here.
> gcc allows Qt to have functions like:
>                 void writeNamespace ( const QString & namespaceUri,
const
> QString & prefix = QString() )
> As well as to pass object where references are required.
> 
> But when I do write a function e.g.
>                 void doSomething(std::string & s);
> and I make a call to it using:
>                 doSomething(QString("test").toStdString()) or
>                 doSomething(std::string("test"));
> the compiler complains very loudly about not finding the function
> definition:
>                 doSomething(std::string )
> and tells me to try:
>                 doSomething(std::string &)
> 
> I must therefore first create a temporary variable and then pass it as
a
> reference.
> 
> am I missing something?
> 
> Thanks!

This really does belong on a C++ group... but...

Your not defining the interface as const std::string & but rather
std::string & (missing the const)

I leave it to your googling to figure out why :)  Hint.. why would you
want to be able to write to a temporary variable created on the call
stack

Scott






More information about the Qt-interest-old mailing list