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. :)

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top