hap broblem!
-
Hi!
Ich habe zwei Namespaces:namespace A { string s1 = "brause"; string get_s1() { return s1; } } namespace B { string s2 = "brummer"; string get_s2() { return s2; } }und will mit mit den verketteten strings ein Objekt Erzeugen:
MyObject myobject ( A::get_s1() + B::get_s2() );Die Deklaration des Konstruktors von MyObjects sieht so aus:
MyObject::MyObject ( const string& s );Mein Problem:
Es kommt bloß "brause" an, aber "brummer" kommt nicht im Konstruktor an.
Wieso nicht
-
mehr code. jetzt.
-
Grad gecheckt, das krasse ist, außerhalb von main() funztnich, innerhalb funzt

myobject_a ( A::get_s1() + B::get_s2() ); // kommt nur "brause" an! int main() { MyObject myobject_b ( A::get_s1() + B::get_s2() ); // ok is! }
-
KORREKTUR
MyObject myobject_a ( A::get_s1() + B::get_s2() ); // kommt nur "brause" an! int main() { MyObject myobject_b ( A::get_s1() + B::get_s2() ); // ok is! }Sorry wegen Klasse vergessen, Problem ist aber klar, ne.
-
Vielleicht sollte ich noch erwähnen, das namespace A, namespace B in zwei verschiedenen Dateien sind und die Erzeugung des Objektes in einer dritten Datei stattfindet.
MfG
-
Die Erstellungsreihenfolge globaler Objekte über Übersetzungseinheitsgrenzen hinweg ist nicht definiert. Vermutlich gibt es den zweiten String zum Zeitpunkt des Konstruktoraufrufs von MyObject einfach noch nicht.
namespace A { string get_s1() { return "brause"; } } namespace B { string get_s2() { return "brummer"; } }Funktioniert es so?
-
Ja, so funktioniert es! Das mit der Reihenfolge wusste ich noch nicht, vielen Dank!
Gruß,
p.