D
@Stalin:
Dein Code ist übrigens nciht ganz korrekt. Es muß folgendermaßen heißen:
[cpp]void CSiConfig::getMotorMap( CMap< CString, LPCTSTR, CSiMotor, CSiMotor& > **MotorMap )
{
*****MotorMap = &m_MotorMap;
} [/cpp]
@bsash:
Jo, die Lösung für dein Problem hast du inzwischen, aber noch ein Hinweis:
Wenn du die Adresse eines Objektes innerhalb einer Funktion ändern willst, dann erstellst du kein Objekt!
CMap < CString, LPCTSTR, CSiMotor, CSiMotor& > m_MotorMap;
m_pConfig = CSiConfig::Instance();
(*m_pConfig).getMotorMap( &m_MotorMap );
Das ist ganz grober Unfug. Du hast das Objekt m_MotorMap, für welches Speicher allokiert wurde bei der Erstellung und dann willst du einfach dessen Adresse ändern ... Das gibt (mindestens) zwei Probleme:
Du hast ein Speicherleck, das ursprüngliche Objekt, auf das m_MotorMap gezeigt hat, wird nie gelöscht.
Wenn der Gültigkeitsbereich von m_MotorMap verlassen wird, dann wird dein Objekt CSiConfig::m_MotorMap ungültig, da ja beide auf den selben Speicherbereich zeigen, der Destruktor von deinem lokalen m_MotorMap den Speicher aber freigibt. Bei Zeigern musst du gut aufpassen