brauche kleinen tipp zu default-konstr.



  • hi,
    brauche kleinen tipp zu folgendem problem:

    // in header file A.h:
    class A
    
    {
       public:
          A(int a=5);
    };
    
    // in cpp file A.cpp
    A::A(int):m_a(a)
    {
      // hier noch irgendwas
    }
    
    int main(int argc, char *argv[])
    {
       A test;
       return 0;
    }
    
    1. Ich will der Klasse A durch angabe von default-werten fuer die konstruktorparameter gleichzeitig auch schon den default-konstruktor ausimplementieren ohne die implementierung im header selbst machen zu muessen
      (in den (schlechten) buechern die ich habe ist leider ein beispiel immer im header gleich vorort ausimplementiert)

    2. Ich will in main den default-konstruktor aufrufen. In der Datei A.cpp habe ich dem konstruktorparameter keinen default-wert zugewiesen (ist das richtig so?)

    jedenfalls ist obiges syntaktisch nicht ganz korrekt und ich braeuchte einen tipp, wie es richtiger waere.

    danke,gruss



  • // in header file A.h:
    class A
    
    {
       [b]int m_a;[/b]
       public:
          A(int a=5);
    };
    
    // in cpp file A.cpp
    A::A(int [b]a[/b]):m_a(a)
    {
      // hier noch irgendwas
    }
    
    int main(int argc, char *argv[])
    {
       A test;
       return 0;
    }
    


  • danke fuer den tipp, dein beispiel geht.
    jedoch muss ich noch zusaetzlich anmerken, dass es sich bei mir
    um eine template-klasse handelt. hatte ich vergessen anzumerken.

    in dem letzten geposteten loesungscode muessten dann noch templates wie

    template<class DATATYPE>
    class A ....
    

    eingefuegt werden.

    da kriege ich beim code der als loesung gepostet wurde ne linker-fehlermeldung.
    bezueglich des konstruktor-aufrufs in main.

    woran liegt das??



  • muck schrieb:

    danke fuer den tipp, dein beispiel geht.
    jedoch muss ich noch zusaetzlich anmerken, dass es sich bei mir
    um eine template-klasse handelt. hatte ich vergessen anzumerken.

    template<class T>
    class A
    {
       T m_t;
       public:
          A(T t);
    };
    
    // in cpp file A.cpp
    template<class T>
    A<T>::A(T t):m_t(t)
    {
      // hier noch irgendwas
    }
    

    da kriege ich beim code der als loesung gepostet wurde ne linker-fehlermeldung.
    bezueglich des konstruktor-aufrufs in main.

    woran liegt das??

    guck mal hier nach:
    http://c-plusplus.net/forum/viewtopic.php?t=96723

    mfg



  • vielen vielen dank fuer das detailwissen.
    es geht alles.

    gruss


Anmelden zum Antworten