Hilfe bei get und set
-
Die Lösung hat drakon schon gepostet ;o)
-
unskilled schrieb:
Die Lösung hat drakon schon gepostet ;o)
Zumindest fast und die Antwort von SeppJ und mir trifft hier auch zu. Man kann einer temporären Variable nichts zuweisen.
Grüssli
-
Vielen Dank....hat auch schon geklappt bei allen Klassen

Nur bei einer noch nicht ganz...ich poste mal den Code...
leider bringt er schon folgende Fehlermeldung bei der get-Methode...error: conversion from 'QObject*' to non-scalar type 'QObject' requested
spiel.h
class spiel : public QLabel { private: int xpos; int ypos; int richtung; int myTimerId; schiff * s; highscore * h; schuss * su; gegner *g; QObject * myApp; //das hier!! int i; QString str; public: QObject getobject(); spiel (QWidget * ); //Konstruktor ~spiel(); //Destruktor QVector<gegner *> vector_gegner; QVector<schuss_gegner *> vector_schuesse; void keyPressEvent(QKeyEvent *event); void showEvent(QShowEvent * event); void timerEvent(QTimerEvent * event); void hideEvent(QHideEvent * event ); void keyReleaseEvent( QKeyEvent *event); };spiel.cpp
QObject spiel::getobject() { return myApp; }main.cpp
... s->myApp = (QObject *)&app; ...
-
QObject spiel::getobject() // <-- soll ein QObject zurückgeben { return myApp; // myApp ist ein QObject* }
-
Und bevor du in weitere Probleme reinrennst:
QObject kann man nicht kopieren. Gib einen Pointer zurück, dann wird alles laufen.
-
Danke...Änderungen bei spiel.cpp und spiel.h bezgl. des Pointers wurden gemacht...
Methode funzt...
Nur leider bekomm ich es bei der main.cpp nicht hin...
-
Mr.Burns schrieb:
Nur leider bekomm ich es bei der main.cpp nicht hin...
Wenn du noch etwas konkreter wirst, können wir dir vielleicht sogar helfen.

-
ok ich versuchs

die aktuelle spiel.h
class spiel : public QLabel { private: int xpos; int ypos; int richtung; int myTimerId; schiff * s; highscore * h; schuss * su; gegner *g; QObject * myApp; int i; QString str; public: QObject *getobject(); spiel (QWidget * ); //Konstruktor ~spiel(); //Destruktor QVector<gegner *> vector_gegner; //dynamisches Array gegner QVector<schuss_gegner *> vector_schuesse; //dynamisches Array schuesse void keyPressEvent(QKeyEvent *event); void showEvent(QShowEvent * event); void timerEvent(QTimerEvent * event); void hideEvent(QHideEvent * event ); void keyReleaseEvent( QKeyEvent *event); };spiel.cpp
QObject* spiel::getobject() { return myApp; }Der Fehler kommt bei der main.cpp:
s->myApp = (QObject *)&app;error: 'QObject* spiel::myApp' is private
Fehlermeldung ist klar...nur wie schreib ich es um in der main.cpp,dass es passt?
Gruß
-
Für was denn das eigentlich?
Es gibt
QApplication::instance()
qApp Macro
um an das QApplication-Objekt zu gelangen. Warum also extra setzen?Zum Problem: Die Fehlermeldung sagt doch alles. Entweder machst du myApp public, oder du bietest eine Funktion "spiel::setMyApp(QObject* o)" an, um das Object zu setzen. Was du aber, wie bereits gesagt, gar nicht brauchst, wenn es dir nur um das QApplication geht.
-
@Mr.Burns,
Wieso programmierst du im übrigen mit Qt, wenn du anscheinend noch nicht mal richtig C++ beherrschst? Wäre es nicht klüger, zuerst richtig C++ zu lernen?Grüssli
-
Danke mit der set-Methode hab ichs hinbekommen!!
void spiel::setMyApp(QObject* o) { myApp = o; }und:
s->setMyApp((QObject *)&app);Warum Qt? gezwungenermaßen

-
Wozu der C-Cast?