Standardargumente - Funktionsproblem



  • guten morgen 😃

    ich hab aus meinem Buch(C++ Primer, s.308/309) folgendes versucht:

    std::string ScreenIt(std::string::size_type width = 80,
    					 std::string::size_type height = 60,
    					 char background = ' ')
    {
    	std::string::size_type sum = width * height;
    	return sum;
    }
    

    Doch wenn ich es aufrufen möchte(ohne Parameter):

    ScreenIt();
    

    .. kommt folgende Fehlermeldung:

    1>d:\c++\visual c++\test_cpp\test_cpp\test_cpp.cpp(13) : error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it)': Konvertierung des Parameters 1 von '__w64 unsigned int' in 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it' nicht möglich
    1>        with
    1>        [
    1>            _Elem=char,
    1>            _Traits=std::char_traits<char>,
    1>            _Ax=std::allocator<char>
    1>        ]
    1>        Konstruktor für struct 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it' ist als 'explicit' deklariert
    1>        with
    1>        [
    1>            _Elem=char,
    1>            _Traits=std::char_traits<char>,
    1>            _Ax=std::allocator<char>
    1>        ]
    

    Hmpf.. ich hab alles aus dem Buch abgeschrieben und genau so abgerufen, wie es drinnensteht, aber irgendwas hab ich sicher vergessen od. falsch gemacht, nur was 😕

    Über Antworten würde ich mich natürlich sehr freuen 😡 .. em ich meinte natürlich 🙂

    Mit freundlichen Grüßen,
    Daniel



  • std::size_t screen_it(const std::size_t width = 80, const std::size_t height = 60)
    {
        return (width * height);
    }
    

    ? ^^



  • (D)Evil schrieb:

    std::size_t screen_it(const std::size_t width = 80, const std::size_t height = 60)
    {
        return (width * height);
    }
    

    ? ^^

    hallo (D)Evil,

    wieso funktioniert das aber nicht mit std::string::size_type ??
    Im Buch steht das mit der "Mal"-Rechnung nicht,wollte es aber Versuchen 😉

    Mit freundlichen Grüßen,
    Daniel



  • Das ginge auch damit ... aber dein Rückgabewert deiner Funktion ist eine Zeichenkette ... da aber std::string::size_type keine Zeichenkette ist ... bums!



  • Hallo,
    size_t ist im normalfall der size_type, aber in Deinem Code gibst ja std::string zurück. Falsch abgetippt?



  • (D)Evil schrieb:

    Das ginge auch damit ... aber dein Rückgabewert deiner Funktion ist eine Zeichenkette ... da aber std::string::size_type keine Zeichenkette ist ... bums!

    ja,sorry, ich hab mich echt geiirt.
    Aber danke trodzdem für die nette Hilfe 😉

    templäd schrieb:

    Hallo,
    size_t ist im normalfall der size_type, aber in Deinem Code gibst ja std::string zurück. Falsch abgetippt?

    hab ich auch gerade bemerkt,dass es std::string zurückgibt, hab zuerst geglaubt, es sei ein std::string::size_type noch, aber da hab ich was verwechseln.

    Danke Leute für die NETTE HILFE 😉


Anmelden zum Antworten