Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat
error C2664: 'std::queue<_Ty>::push': Konvertierung des Parameters 1 von 'Message<MTE> *const ' in 'Message<MTE> *const &' nicht möglich
C-/C++-Quelltext |
|
1 |
std::queue<Message<MTT>*> m_qMessages; |
Zitat von »"David_pb"«
Pointer sind nicht böse. Den Eindruck scheinen nur manche zu haben, weil sie nicht richtig mit Pointern umgehen können. Und warum sollte es keinen Sinn machen Zeiger in eine Queue zu packen? Das kann sogar sehr sinnvoll sein.
Kannst du vielleicht noch den Kontext der Konvertierung zeigen? So, dass man die Deklaration des Zieltyps auch sieht.Zitat von »"the[V«
oid"]Die Queue ist übrigens wie folgt definiert:
"Meisten" würde ich jetzt nicht unbedingt sagen, es gibt immer noch viele Fälle, wo Zeiger nötig sind. Das Beispiel hier zeigt das schön, man kann nämlich keine Referenzen in Containern speichern.Zitat von »"Asmodiel"«
Aber hey, kommt drauf an. Eigentlich kann man Pointer in den
meisten Fällen durch Referenzen ersetzen, was ich selbst auch
tue, wenn es geht.
Und sag mir, für welches Sprachmittel das nicht gilt. :pZitat von »"Asmodiel"«
Pointer selbst sind nicht böse, aber wenn
man sie nicht sicher behandelt, ist das böse.
Zitat von »"David_pb"«
Zeig mal die Zeile wo du den Zeiger in die Queue einfügst.
C-/C++-Quelltext |
|
1 2 |
Message<MTE>* const pMessage = pFactory -> create (); m_qMessages.push (pMessage); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
template <typename MTE> class Message { public: // Message takes ownership of given memory block Message (const MTE type, void* pvData, const unsigned short nLength) : m_type (type), m_pvData (pvData), m_nLength (nLength) { } ~Message () { delete [] pvData; } private: MTE m_type; void* m_pvData; unsigned short m_nLength; public: MTE getType () const { return m_type; } const void* getData () const { return m_pData; } unsigned short getLength () const { return m_nLength; } |
Werbeanzeige