Der Aufruf Konstruktor von einer anderen Klasse
-
06-07-2019 - |
Frage
Wenn ich eine Klasse wie folgt:
typedef union { __m128 quad; float numbers[4]; } Data
class foo
{
public:
foo() : m_Data() {}
Data m_Data;
};
und eine Klasse wie folgt:
class bar
{
public:
bar() : m_Data() {}
foo m_Data;
}
ist foo Konstruktor aufgerufen, wenn eine Instanz von Bar zu machen?
Weil, wenn ich versuche bar
dem m_Data
des quad
in bar
zu verwenden, scheint es nicht initialisiert werden, auch wenn sie Werte in numbers[4]
hat. : \
Insbesondere diese Abstürze:
m_Data.quad = _mm_mul_ps(m_Data.quad, a_Other.m_Data.quad)
Jede Hilfe wäre sehr geschätzt. :)
Lösung
Sie haben Ihr Konstruktor zu deklarieren public
werden, sonst sind Sie nicht so dass jede Klasse instanziiert, wenn Sie es als private
Mitglied erklären.
Andere Tipps
Sieht gut für mich. foo und die Bar sind nicht-POD-Typen, weil sie einen Konstruktor haben, so dass ihre Mitglieder initialisiert werden garantiert nach der Konstruktion.
Vielleicht werden die Daten später durch ein Speicherleck überschrieben?
Wie erstellen Sie die Instanz von Bar?