Seite 1 von 1

Parameter &

Verfasst: 17. Juli 2012 16:10
von DBGTMaster
Hallo,

ich habe eine Methode:

Code: Alles auswählen

template<typename DATA_TYPE>
void TcpAbstractCommand::_streamWrite(DATA_TYPE &var) {
    UtilDataStream::write(_dataStreamWrite, var);
}
Rufe ich nun auf:

Code: Alles auswählen

_streamWrite(_user->getColumn(column));
So erhalte ich den Fehler:

Code: Alles auswählen

error: no matching function for call to 'xyz::_streamWrite(QVariant)'
note: candidate is:
note: void xyz::_streamWrite(DATA_TYPE&) [with DATA_TYPE = QVariant]
note:   no known conversion for argument 1 from 'QVariant' to 'QVariant&'
Muss ich hier nun oben den Wert zwischen speichern und dann überegben, oder gibt es hier bessere Wege?

Code: Alles auswählen

    QVariant write = _user->getColumn(column);
    _streamWrite(write);
lG

Re: Parameter &

Verfasst: 17. Juli 2012 16:34
von franzf
Ja, denn _streamWrite erwartet eine NONCONST Referenz, für die als Parameter MUSS eine Instanz existieren.
Lösung:
_streamWrite klingt so, als woltest du den Parameter in einen Stream schreiben. Der Parameter bleibt unangetastet:
-> Mach einen DATA_TYPE const& draus.