std::queue class->struct->union. struct nicht vorhanden?
-
Hallo,
ich hab ein Problem das ich nicht verstehe.
Ich hab ne Klasse "Test" mit einem Struct "teststr" und verwende union mit dem struct.#include <queue> class Test { struct teststr { bool test; }; union { teststr size; }; };In der main möchte ich das "Test" Object mit queue verwenden.
std::queue<Test> m_tests; ///< Queue of available tests Test test1; //test1.teststr.test ist null/leer???? Test test2; //test2.teststr.test ist null//leer ??Das Problem ist dass test1.teststr.test leer ist.
wenn Test test1; vor queue, dann test1.teststr.test gefüllt.
Test test1; //.teststr.test is filled !! std::queue<Test> m_tests; ///< Queue of available tests Test test2; //test2.teststr.test is filled !!meine frage:
wieso ist das struct teststr nicht initialisiert bzw. gesetzt wenn:std::queue<Test> m_tests; ///< Queue of available tests Test test1; //test1.teststr.test is null/empty???? Test test2; //test2.teststr.test is null//empty ??;
-
Und wie stellst du fest, dass eine bool-Variable "leer" ist?
-
Im Debugger?
`
so sollet es aussehen? tut es auch wenn test1 vor queue ....- test1 {test2=true size={...} } Test test2 true bool - size {test=true } Test::teststr test true boolso sollte es nicht aussehen? wenn test1 nach queue ....
- test1 {test2=true size=??? } Test test2 true bool size Test::teststrsize scheint hier nicht zu existieren?
-
wirr.
test1.teststr.testWas soll das sein?
Es gibt test1.size.test oder Test::teststr::test
-
Es gibt test1.size.test oder Test::teststr::test
sry, ja das meinte ich
das scheint es nicht zu geben?
-
so hab heut mal mit nem Arbeitskollege gesprochen der viel mit C++ macht.
Er meinte auch dasstest1.size.testtrue oder false sein müsste ....
Mehrmals getestet .....
Screenshot als Beweis ....
-
Eine bool-Variable ist immer entweder true oder false. Wenn dein Debugger dir etwas anderes anzeigt, spinnt er entweder oder du dir dein Programm mit fehlerhaften Speicherzugriffen zerschossen, so dass der Debugger das Chaos nicht mehr entwirren kann.
-
das codeschnipsel in der Reihenfolge
std::queue<Test> m_tests; ///< Queue of available tests Test test1; //test1.teststr.test ist leer???? Test test2; //test2.teststr.test ist /leer ??ausprobiert?
was will ich mir da zerschießen bei fast 0 Zeilen Code? Das gleiche verhalten bei mir zuhause und im geschäft....

-
Der Debugger kann's halt nicht, na und? Schreib doch erstmal korrekten Code und dann schau weiter.

-
ja gerade mit nem zusätzlichen integer und ner konsolenausgabe getestet ...
Scheint wohl an Visual Studio 2010 zu liegen ....
@Eisflamme und was genau meinst du damit? Soviel falsch kann da ja nicht sein, oder doch?

-
XBog: Wo initialisierst du denn ein (hier: dein einziges) Member deiner Union? Nirgends? Na dann Fehler gefunden.
Regel Nummer 1 beim Verwenden von Unions: Du machst es falsch.
-
Wo initialisierst du denn ein (hier: dein einziges) Member deiner Union? Nirgends? Na dann Fehler gefunden. Regel Nummer 1 beim Verwenden von Unions: Du machst es falsch.Danke für den Hinweis!

-
Ich verstehe immer noch nicht, welches Problem eigentlich vorliegen soll.
Weder gibt es brauchbaren Code, noch eine vernünftige Fehlerbeschreibung.