[Erledigt] Zuweisung, Swap String



  • Hi ich hab grad folgendes Problem

    Ich hab eine Klasse mit einem String als Member, und muss den Zuweisungsoperator implementieren.

    class material
    {
    public:
    	material() {}
    	material( std::string name_ ) : name( name_ ) {}
    	~material(void) {}
    	material& operator=( const material& other )
    	{
    		if( &other != this ) {
    			std::swap( name, other.name );
    		}
    		return *this;
    	}
    
    	std::string name;
    };
    

    Wenn ich das so wie oben mache gibt das diesen Fehler.

    ...material.h(14) : error C2664: 'void std::swap<char,std::char_traits<char>,std::allocator<_Ty>>(std::basic_string<_Elem,_Traits,_Ax> &,std::basic_string<_Elem,_Traits,_Ax> &)'
       : cannot convert parameter 2 from 'const std::string' to 'std::basic_string<_Elem,_Traits,_Ax> &'
            with
            [
                _Ty=char,
                _Elem=char,
                _Traits=std::char_traits<char>,
                _Ax=std::allocator<char>
            ]
            and
            [
                _Elem=char,
                _Traits=std::char_traits<char>,
                _Ax=std::allocator<char>
            ]
            Conversion loses qualifiers
    

    Und wenn ich nur

    name = other.name
    

    schreibe, hab ich undefiniertes Verhalten, sprich einen BadPtr was zur Exception führt

    material {name="ìû" }

    Wer kann mir helfen?
    Danke im voraus



  • Easy 🙂
    hat sich erledigt, der Fehler lag woanders.



  • und muss den Zuweisungsoperator implementieren.

    glaub ich nicht.


Anmelden zum Antworten