2 Objekte in einer Methode



  • Hallo Zusammen

    Bin schon seit einiger Zeit auf der suche nach eienr Lösung für folgebdes Problem:

    Ich habe 2 Klassen

    class Mensch_1
    {
      private: 
        std::string name; 
        int alter;
    
      public: 
        Mensch_1()      // Standardkonstruktor 
        : name(""),    // Initialiserungsliste 
          Alter(0)
        { 
          //Konstruktorrumpf 
        } 
    
        Mensch_1(   // Konstruktor mit Parametern 
         std::string const & name, 
    	 int alter) 
        : name(name),       // Zuweisung Parameter zur Membervariablen 
          alter(alter)
        { 
        } 
    
    }
    };
    
    class Mensch_2
    {
      private: 
        std::string name; 
        int alter;
    
      public: 
        Mensch_2()      // Standardkonstruktor 
        : name(""),    // Initialiserungsliste 
          Alter(0)
        { 
          //Konstruktorrumpf 
        } 
    
        Mensch_2(   // Konstruktor mit Parametern 
         std::string const & name, 
    	 int alter) 
        : name(name),       // Zuweisung Parameter zur Membervariablen 
          alter(alter)
        { 
        } 
    
    }
    };
    

    Jetzt möchte ich eine Funktion machen in welcher ich von beiden Klassen je ein Objekt verwenden möchte.

    Mensch_1 Tobias("Tobias",12);
    Mensch_2 Hans("Hans",18);

    Wie kann ich jetzt in einer Funktion von beiden Objekten die Werte benutzen.

    if(AlterVonHans<AlterVonTobias)
    {
    cout << "Hans ist älter";
    }
    
    HansAlter_2=HansAlter+10
    cout << "in 10 Jahren ist Hans" <<HansAlter_2 <<"Jahre alt";
    

    Wie kann ich dies realisieren?

    Gruss
    hans123123



  • 1. Du bist wohl im falschen Forum gelandet. Das was Du machst sieht mehr nach C++ aus.
    2. Warum erstellst Du zwei identische Klassen und nicht zwei Objekte von einer Klasse?
    3. Im Moment kann niemand auf alter und name zugreifen, da diese private sind. Wenn Du eine get-Methode (z.B. getAlter) realisierst, kannst Du mit Tobias.getAlter() bzw. Hans.getAlter() auf die Werte zugreifen.



  • Bleistift:

    #include <string>
    #include <iostream>
    
    class human_t {
    	private:
    		std::string name;
    		int age;
    
    	public:
    		human_t( ) : name( ), age( ) { }
    		human_t( const std::string &name = "", int age = 0 ) : name( name ), age( age ) { }
    
    		int get_age( ) const { return age; }
    		std::string get_name( ) const { return name; }
    };
    
    void some_function( human_t &a, human_t &b )
    {
    	if( a.get_age( ) < b.get_age( ) ) {
    
    		std::cout << a.get_name( ) << " ist juenger als " << b.get_name( ) << std::endl;
    
    	} else if( a.get_age( ) > b.get_age( ) ) {
    
    		std::cout << a.get_name( ) << " ist aelter als " << b.get_name( ) << std::endl;
    
    	} else {
    
    		std::cout << a.get_name( ) << " und " << b.get_name( ) << " sind gleich alt." << std::endl;
    	}
    }
    
    int main()
    {
    	human_t hans( "Hans", 20 );
    	human_t fritz( "Fritz", 20 );
    
    	some_function( hans, fritz );
    }
    


  • LordJaxom schrieb:

    1. Du bist wohl im falschen Forum gelandet. Das was Du machst sieht mehr nach C++ aus.
    2. Warum erstellst Du zwei identische Klassen und nicht zwei Objekte von einer Klasse?
    3. Im Moment kann niemand auf alter und name zugreifen, da diese private sind. Wenn Du eine get-Methode (z.B. getAlter) realisierst, kannst Du mit Tobias.getAlter() bzw. Hans.getAlter() auf die Werte zugreifen.

    Ja es ist C++ ^^ sorry
    Das eine Objekt wird dann ein Attribut mehr haben als das andere da es zu einer anderen Klasse gehört.

    Danke für den Tipp werde ich sofort versuchen.

    Gruss
    Hans123123


Anmelden zum Antworten