Inner Class Member im Konstruktor declarieren, wie??



  • Hallo zusammen! 😮

    Ich hab folgende Sitatuion in meiner Klasse:

    class A 
    {
      A(CMyClassXYZ _xyz);
    
     class daten
      {
        CMyClassXYZ m_member;
      };
    
    };
    

    Nun möchte ich in der .cpp den Konstruktor schreiben:

    [code="cpp"]
    A::A(CMyClassXYZ _xyz)
    : m_member(_xyz)
    {
    ...
    }
    [/code]

    Nun habe ich das Problem, dass ich nicht weiß wie ich an den Member der inneren Klasse ran komme im Konstruktor.
    Der Compiler sagt, er kennt den Member (m_member) nicht.
    Kann mir jemand helfen? 😮

    Vielen Dank schon mal!



  • Du musst auch eine Membervariable vom Typ der inneren Klasse erstellen.



  • Hi,

    du kommst wahrscheinlich von Java so wie das aussieht. In C++ gibt es "nested classes". Diese sind haben aber keinen impliziten Pointer auf die aeussere Klasse. Das hat nur was mit dem Lookup der Klasse und Zugriff auf die Member der auesseren Klasse zu tun. Siehe auch Nested types

    Edit: Ups hatte daw wohl was falsch im Kopf. Bei Java hat man auch nicht implizit einen InnerClass Member. Wie daddy_felix natuerlich richtig sagt du musst in deiner 'A' Klasse einen Member vom Type 'CMyClassXYZ' anlegen oder eben 'daten'.


  • Mod

    class A 
    {
      A(CMyClassXYZ _xyz);
    
     class daten
      {
        CMyClassXYZ m_member;
      };
    
    };
    

    Das unterscheidet sich nicht erheblich von

    class foo
    {
        CMyClassXYZ m_member;
    };
    
    class A 
    {
      A(CMyClassXYZ _xyz);
    
      typedef foo daten;
    
    };
    

    sicherlich würdest du hier nicht erwarten, dass A plötzlich ein m_member hat.



  • Okay, danke schon mal für eure Antworten!!!

    Ich habe also in meiner Klasse A, einen Member von der inneren Klasse "daten",so?

    class A
    {
     A(CMyClassXYZ _xyz);
    
     class daten
      {
        CMyClassXYZ m_member;
      }
     m_daten;//so? 
     daten m_daten;//oder so?
    
    };
    

    Aber wie ist dann der Syntax für den Konstruktor?

    A::A(CMyClassXYZ _xyz)
    : m_member(_xyz)
    {
    ...
    }
    

    Weil so wie ich es jetzt geschrieben habe geht es nicht, muss ich an der Stelle den Konstruktor von daten aufrufen? 😕 😕 😕



  • jamie schrieb:

    ..., muss ich an der Stelle den Konstruktor von daten aufrufen?

    👍


Log in to reply