no matching function for call to :(



  • Ich habe folgende Frage an Euch.
    Übe mal wieder ein wenig und stoße auf folgende Problematik.
    Es handelt sich hierbei um ein Programm ohne welche Logik. Einfach zu Übungszwecken. Wenn ich eine Klasse erstelle mit Attribut einer anderen Klasse ( Objekt) bekomme ich immer diesen Compilerfehler. Ich kann mir schon denken, an was es liegt, aber kann es leider nicht beheben. Ich habe ein Problem mit dem Konstruktor. Er möchte ein neues Objekt erstellen ruft den Compiler von Mensch auf, da aber Mensch ein Attribut des Objektes Haustier beinhaltet, weiß er nicht
    wie er zu agieren hat oder?
    Hab es mit getter und setter methoden versucht, aber komme nicht zum Ziel, schon bei einer anderen Übung von mir scheitere ich hier... Ich hoffe Ihr könnt mir helfen. MFG und danke im Voraus

    Hier meine h files und cpp's:

    Mensch.h

    /*
     * CMensch.h
     *
     *  Created on: 13.02.2017
     *      Author: 
     */
    
    #ifndef CMENSCH_H_
    #define CMENSCH_H_
    
    using namespace std;
    #include "CHaustier.h"
    
    #include <iostream>
    
    class CMensch
    {
    private:
    	int m_alter;
    	string m_name;
    	CHaustier m_tier;
    public:
    	CMensch();
    	CMensch(int alter,string name);
    	virtual ~CMensch();
    	void setHaustier(const CHaustier & obj);
    };
    
    #endif /* CMENSCH_H_ */
    

    Mensch.cpp

    /*
     * CMensch.cpp
     *
     *  Created on: 13.02.2017
     *      Author: 
     */
    
    #include "CMensch.h"
    
    using namespace std;
    
    #include <iostream>
    
    //CMensch::CMensch()
    //{
    //
    //
    //}
    
    CMensch::CMensch(int alter, string name)
    {
    	m_alter = alter;
    	m_name = name;
    
    }
    
    CMensch::~CMensch()
    {
    	// TODO Auto-generated destructor stub
    }
    
    void CMensch::setHaustier(const CHaustier& obj)
    {
    	this->m_tier = obj;
    }
    

    Haustier.h

    /*
     * CHaustier.h
     *
     *  Created on: 13.02.2017
     *      Author: 
     */
    
    #ifndef CHAUSTIER_H_
    #define CHAUSTIER_H_
    
    using namespace std;
    
    #include <iostream>
    
    class CHaustier
    {
    private:
    	int m_tieralter;
    	string m_tiername;
    public:
    	CHaustier(int tieralter, string tiername);
    	virtual ~CHaustier();
    	void setTiername(string Tiername);
    	void setTieralter(int Tieralter);
    	int getTierAlter();
    	string getTiername();
    
    };
    
    #endif /* CHAUSTIER_H_ */
    

    Haustier.cpp

    /*
     * CHaustier.cpp
     *
     *  Created on: 13.02.2017
     *      Author: 
     */
    
    #include "CHaustier.h"
    
    //CHaustier::CHaustier()
    //{
    //	// TODO Auto-generated constructor stub
    //
    //}
    
    CHaustier::CHaustier(int tieralter, string tiername)
    {
    	this->m_tieralter = tieralter;
    	this->m_tiername = tiername;
    
    }
    
    CHaustier::~CHaustier()
    {
    	// TODO Auto-generated destructor stub
    }
    
    void CHaustier::setTiername(string Tiername)
    {
    	m_tiername = Tiername;
    }
    
    void CHaustier::setTieralter(int Tieralter)
    {
    	m_tieralter = Tieralter;
    }
    
    int CHaustier::getTierAlter()
    {
    	return m_tieralter;
    }
    
    string CHaustier::getTiername()
    {
    	return m_tiername;
    }
    


  • Shit ich glaube ich habe die Lösung schon wieder 😃

    Hab einen Default Konstruktor initialisieren müssen



  • Wenn man die Lösung selbst findet, lernt man doch am Besten 😃

    Eine andere Möglichkeit wäre gewesen den Konstruktor von CHaustier in der Initialisierungliste von CMensch aufzurufen. Also so was:

    CMensch::CMensch(int alter, string name): m_alter(alter),
                                              m_name(name),
                                              m_tier(1, "Bello")
    {}
    


  • buu2188 schrieb:

    Shit ich glaube ich habe die Lösung schon wieder 😃

    Hab einen Default Konstruktor initialisieren müssen

    Machst du jetzt für jede Fehlermeldung deines Compilers ein neues Thema auf?! Nervt jetzt schon...


Anmelden zum Antworten