Template Klasse Frage



  • template <typename T>
    class basetest: public CObject {
    	void IncObjectSize(){};
    	void DecObjectSize(){};
    
    protected:
    	T		m_var;
    
    public:
    	explicit basetest(const T& value): m_var(value) {};
    	virtual ~basetest() {};
    
    	basetest<T>& operator=(const T& value);
    };
    
    template<typename T>
    basetest<T>& basetest<T>::operator=(const T& value) {
    	this->m_var = value;
    	return *this;
    };
    
    class test: public basetest<int> {
    public:
    	test(): basetest(0) {};
    	~test() {};
    	int get() const { return this->m_var; };
    };
    
    // main.cpp
    test a;
    a = 100;
    std::cout << a.get() << std::endl;
    

    bekomme Error 1 error C2664: 'test::operator =' : cannot convert parameter 1 from 'int' to 'const test &' Project
    bitte mich aufzuklaeren, danke sehr

    wenn ich folgende aendere, wie findet ihr das

    template <typename T1, typename T2>
    class basetest: public CObject {
    	void IncObjectSize(){};
    	void DecObjectSize(){};
    
    protected:
    	T1		m_var;
    
    public:
    	explicit basetest(const T1& value): m_var(value) {};
    	virtual ~basetest() {};
    
    	T2& operator=(const T1& value);
    };
    
    template<typename T1, typename T2>
    T2& basetest<T1, T2>::operator=(const T1& value) {
            T2 testvar
    	testvar.m_var = value;
    	return testvar;
    };
    


  • Du weist dem Objekt deiner Klasse einen Wert zu, das geht nicht. Warum machst du für soetwas einen neuen Thread auf?



  • Kóyaánasqatsi schrieb:

    Du weist dem Objekt deiner Klasse einen Wert zu, das geht nicht. Warum machst du für soetwas einen neuen Thread auf?

    kannst bitte genauer erklaeren? warum geht nicht, zuweisungsoperator is doch vererbt.

    @neuer thread, ich dachte neue fragen, neuer thread, hab irgendwo gelesen, aber wenn das nicht der fall is, sorry.



  • JnZn558 schrieb:

    kannst bitte genauer erklaeren? warum geht nicht, zuweisungsoperator is doch vererbt.

    weil der op= von test den op= von basetest verdeckt


Anmelden zum Antworten