Hallo Forum,
ich wollte eine Funktion haben, die mir Spalten und Zeilen eines QGridLayout addiert.
in mainwindow.cpp:
int MainWindow::gridItems(QGridLayout &grid) {
return ( grid->rowCount() + grid->columnCount() );
}
dazu in der mainwindow.h als protected:
int gridItems(QGridLayout&);
der Aufruf erfolgt dann in mainwindow.cpp mit
qDebug() << gridItems(*myGridLayout);
gibt dann aber folgende Fehler:
mainwindow.cpp: In member function ‘int MainWindow::gridItems(QGridLayout&)’:
mainwindow.cpp:141: error: base operand of ‘->’ has non-pointer type ‘QGridLayout’
mainwindow.cpp:141: error: base operand of ‘->’ has non-pointer type ‘QGridLayout’
Könnt ihr mir erklären was ich da falsch mache?
Grüße
Roland
Funktionsaufrufe [gelöst]
Funktionsaufrufe [gelöst]
Zuletzt geändert von rvb am 18. April 2010 10:07, insgesamt 1-mal geändert.
Du übergibst eine Referenz und keinen Zeiger. Pfeiloperator (->) Brauchst du, wenn du einen Zeiger als Operand hast.
Da du selten ein QGridLayout (überhaupt ein QObject) per Value antreffen wirst, kannst du auch einfach einen Zeiger an die Funktion übergeben.
Die andere Variante mit Referenz:
Sowas sollte aber in jedem Buch im Kapitel über Zeiger/Referenzen stehen!
Da du selten ein QGridLayout (überhaupt ein QObject) per Value antreffen wirst, kannst du auch einfach einen Zeiger an die Funktion übergeben.
Code: Alles auswählen
int MainWindow::gridItems( QGridLayout const * const grid) const {
return ( grid->rowCount() + grid->columnCount() );
}Code: Alles auswählen
int MainWindow::gridItems( QGridLayout const& grid) const {
return ( grid.rowCount() + grid.columnCount() );
}