Hilfe bei get und set
-
Ich sehe nirgendwo, was pos() oder x() sein sollen. Von der Fehlermeldung her würde ich aber mal vermuten, dass diese keine Referenz zurückgeben. Du benutzt sie aber so, als könnte man ihnen etwas zuweisen.
edit: 15 Sekunden zu langsam...

-
gegner hat ja auch gar keine funktion
pos!?der code sieht aber so und so etwas chaotisch aus - wieso besitzt spiel einen pointer auf gegner?
bb
btw: Du hast Konstruktor und Destruktor verwechselt(zumindest bei den Kommentaren) ;o)
-
Was soll diese Zeile überhaupt?
Was soll x da sein?Ich denke du willst eher das hier:
g->pos().setx( rand() % 1 + 0 );
-
Stimmt,verwechslung rückgängig gemacht;)
Aber auch Fehler von mir, dass die Fehlercodezeile falsch ist...
Sie sieht eigendlich so aus:g->getx() = rand() % 1 + 0; //Fehler!!!!!!Hoffe das hilft vllt weiter!!
-
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?