default parameter classe wie?



  • hab ein problem mit der erstellung einer classe.
    im konstruktor soll ein default-parameter eingegeben werden dieser is vom typ her eine classe

    //myclass.h
    class Myclasse{ 
        public:
        int test;
        int test2;
        Myclasse(int tes,int tes2);
    
    };
    
    //myclass.cpp
    #include "Myclasse.h"
    Myclasse::Myclasse(int tes,int tes2):test(tes),test2(tes2){}
    
    //myclass2.h
    #include "Myclasse.h"
    class Myclasse2{
       int add;
       Myclasse2(my = new Myclasse(10,10));
    
    };
    
    //myclass2.cpp
    #include "Myclasse2.h"
    Myclasse2::Myclasse2(my = new Myclasse(10,10)):add(Myclasse.test+Myclasse.test2){delete my;}
    

    fehler meldung:
    1 ..\Myclasse2.cpp In file included from Myclasse2.cpp
    4 ..\Myclasse2.h expected )' before '=' token 2 ..\\Myclasse2.cpp expected)' before '=' token
    2 ..\Myclasse2.cpp expected ,' or;' before '=' token

    ich hab es auch mal anders versucht

    #include "Myclasse.h"
    class Myclasse2{
       int add;
       Myclasse2(Myclasse my (10,10));
    
    };
    
    #include "Myclasse2.h"
    Myclasse2::Myclasse2(Myclasse my):
                                  add(Myclasse.test+Myclasse.test2)
    {}
    

    fehlermeldung;
    1 ..\Myclasse2.cpp In file included from Myclasse2.cpp
    4 ..\Myclasse2.h expected ,' or...' before '(' token
    ..\Myclasse2.cpp In constructor `Myclasse2::Myclasse2(Myclasse)':
    3 ..\Myclasse2.cpp expected primary-expression before '.' token
    3 ..\Myclasse2.cpp expected primary-expression before '.' token



  • class foo
    {
    public:
        foo(std::size_t i = 0) : i(i) {} // Default-Value = 0
    
    public: 
        std::size_t const& get() const { return i; }
    
    private:
        std::size_t i;
    };
    
    class bar : public foo
    {
    public:
        bar(foo* ptr) : foo(ptr->get()) { }
        bar(std::size_t i) : foo(i) {}
    };
    

    also geht alles ^^ Initialisierungsliste ist das was du suchst ...



  • class my1
    {
    public:
    	int t1;
    	int t2;
    
    	my1(int tt1, int tt2):t1(tt1),t2(tt2){}
    };
    
    class my2
    {
    public:
    	int t12;
    
    	my2(my1 *m=new my1(1,2)):t12(m->t1+m->t2){/*Edit:*/ delete m;}
    };
    
    int main()
    {
    	my2 *m2;
    
    	m2 = new my2();
    
    	printf("%i", m2->t12);
    }
    

    geht doch 1a



  • What the *beep*?

    Wieso die ganzen Zeiger?

    class my1 {
    public:
        int t1;
        int t2;
    
        my1(int tt1, int tt2) : t1(tt1), t2(tt2) { }
    };
    
    class my2 {
    public:
        int t12;
    
        my2(my1 const& m = my1(1, 2)) : t12(m.t1 + m.t2) { }
    };
    
    int main()
    {
        my2 m2;
        std::cout << m2.t12 << std::endl;
    }
    


  • ok es klappt
    thx an alle



  • jo sry ist mein stil arbeite immer so, ist auch nur nen beispiel habe ehh nen eigenes system für meine speicherverwaltung daher steckt schon so in mir drinnen 😃


Anmelden zum Antworten