Standardkonstruktor bei Referenzübergabe wird aufgerufen...



  • Hallo,

    struct rootnums
    {
    	rootnums() : m_nGMain(-1), m_nProtocol(-1), m_nTextureManager(-1), m_nCamera(-1)
    	{
    		m_nGMain = m_nGMain;
    	}
    	rootnums(int nGMain, int nProtocol, int nTextureManager, int nCamera) : m_nGMain(nGMain), m_nProtocol(nProtocol), m_nTextureManager(nTextureManager), m_nCamera(nCamera)
    	{
    		m_nGMain = m_nGMain;
    	};
    	rootnums(const rootnums& c)
    	{
    		m_nGMain = c.m_nGMain;
    		m_nTextureManager = c.m_nTextureManager;
    		m_nProtocol = c.m_nProtocol;
    		m_nCamera = c.m_nCamera;
    	}
    
    	int      m_nGMain;
    	int      m_nProtocol;
    	int      m_nTextureManager;
    	int      m_nCamera;
    };
    
    CBParticleSystem(CKernel* pKernel, const rootnums& rnRootnums, const particleinfo& piInfo); // Prototyp in Klasse
    
    CBParticleSystem::CBParticleSystem(CKernel* pKernel, const rootnums& rnRootnums, const particleinfo& piInfo) 
    {
    	m_piInfo = piInfo;
    	m_pDevice = *pKernel->GetGMain(m_rnRootnums.m_nGMain)->getDevice();
    	m_pTextureManager = pKernel->GetTextureManager(m_rnRootnums.m_nTextureManager);
    
    rootnums rnStandard(0, 0, 0, 0);
    
    CBParticleSystem* pPartSys = new CBParticleSystem(m_pKernel, rnStandard, piInfo);
    

    Wenn ich den Debugger auf die Zeile mit pPartSys setze, ist rnStandard mit Nullen befüllt, wie es auch sein soll.
    Ich habe auch im Kopier- und Standard-konstruktor Haltepunkte gesetzt, sowie in den ersten 3 Zeilen des Konstruktors von CBParticleSystem.
    Der Debugger springt in den Standardkonstruktor und befüllt alle Werte mit -1.
    Im ctor von CBParticleSystem ist die const-Referenz auch mit minus-Einsen befüllt.

    Was soll das?
    Ich gebe meine Struktur (0, 0, 0, 0) über eine konstante Referenz an die Klasse und trotzdem wird irgendwo ein neues Objekt gemacht und dessen Standard-ctor aufgerufen.

    Sieht hier jemand den Fehler?

    Danke im Voraus,

    MfG MAV



  • Problem gelöst, es lag an was anderem.


Anmelden zum Antworten