const referenz mit NaN ?
-
Hallo,
ich habe in einer Klasse eine member-variable m_a die ich einfach über double m_a; im header habe.
Ich setze die variable so:
f(const double & val) { m_a = val; } double val = 1.0; f(val); std::cout << m_a << std::endl;
Die ausgabe liefert mir NaN....wie kann das sein?
-
Zeig mal richtigen Code..
-
sorry geht nicht ist zu umfangreich...
class A { public: double m_a; }; // andere datei void fun(const double & val) { m_a = val; } // andere funktion z:B. void andere() { double val = 1.0; fun(val); // oder auch fun(1.0); // liefert NaN ? std::cout << m_a << std::endl; }
-
Ich dachte,
m_a
sei eine Membervariable, wie soll sie also in freien Funktionen bekannt sein? Selbst unter der Annahme, dass das Memberfunktionen sind, können wir nur raten.Hast du die Variablen im Debugger kontrolliert (z.B. die übergebene
val
)? Tritt der Fehler auch auf, wenn du statt einer Const-Referenz eine Kopie übergibst?
-
Ich sehe nirgends eine Instanz von A. Folglich gibt es auch kein m_a.
-
ja grmp...die funktionen sind natürlich in der klasse enthalten...
class A { public: double m_a; void fund(const double & val); void andere(); }; // andere datei - implementierung von class A void fun(const double & val) { m_a = val; } // andere funktion z:B. void andere() { double val = 1.0; fun(val); // oder auch fun(1.0); // liefert NaN ? std::cout << m_a << std::endl; }
-
du brauchst erstmal ne Instanz von deiner Klasse um überhaupt auf m_a zugreifen zu können.
-
Meine Güte. Was ist so schwer daran ein laufendes Beispiel zu machen?!
Wenn du das nämlich hinkriegst, wirst du auch merken wo dein Denkfehler ist. Es nützt nichts, wenn du nicht relevanten Code postest und wir dann erraten sollen, wo du einen Fehler machst..
-
Kopier einfach den Code der Klasse, so wie er aussieht. Dann löschst du die nicht relevanten Dinge weg. An den wichtigen Funktionen und Anweisungen musst du natürlich nichts ändern, du verstehst sicher, warum.