Struct aus einer Memberfunktion zurückgeben



  • Hallo,

    ich möchte ein Struct aus einer Memberfunktiuon am Stück zurückgeben. Wenn ich nachfolgenden Code benutze bekomme ich beim compilieren eine Fehlermeldung. Weis jemand woran das liegt ?

    class CMathConv  
    {
    public:
    	struct DataWord* Get16BitDec(int value);
    	CMathConv();
    	virtual ~CMathConv();
    
    private:
     struct DataWord* m_ptr16BitValue;
    };
    
    DataWord* CMathConv::Get16BitDec(int value)
    {	
    	//struct DataWord result;
    
    	m_ptr16BitValue->nByteH = 0;
    	m_ptr16BitValue->nByteL = 0;
    
    	// Wert kleiner wie 16 Bit
    	if((value <= 65535) && (value >= 0))
    	{
    		// Low-Byte verunden
    		m_ptr16BitValue->nByteL = value & 255;									// '0000 0000 1111 1111'
    
    		// High-Byte verunden
    		m_ptr16BitValue->nByteH = value & 65280;						 // '1111 1111 0000 0000'
    	}
    
    	else
    	{
    		if(value <= 65535)
    			AfxMessageBox("Der übergebene Wert ist grösser wie 16 Bit", MB_ICONERROR);
    
    		if(value >= 0)
    			AfxMessageBox("Der übergebene Wert ist negativ", MB_ICONERROR);
    	}
    
    	return *m_ptr16BitValue;      
    }
    


  • Hallo,

    das Problem ist du musst einen Zeiger (laut Methodendefinition) zurückgeben und nicht den Wert an auf den gezeigt wird.

    also...

    return m_p.... und nicht return *m_p...



  • Danke so funzt es :-))

    und wie defieniere ich den Aufruf der Funktion ? Folgender Code funzt nicht.

    ...
    struct DataWord* ptrValue;
    
    CMathConv math;
    ptrValue = math.Get16BitDec(800);        // geht nicht :-(((
    ...
    


  • Poste mal mehr von deinem Code, bitte.



  • Aloha,

    wichtig wäre vor allen Dingen an welcher Stelle das Proggi wegknallt. Setze mal nen Haltepunkt und gehe Schritt für Schritt durch (auch durch die Funktion !!! ).

    Grüße

    BOA


Anmelden zum Antworten