Const Char* problem



  • hi

    Ich hab ein Problem:

    Beim Folgenden Quellcode:

    inline int		Q_stricmp( const char *s1, const char *s2 )			{ return stricmp( s1, s2 ); }
    inline char*	Q_strstr( const char *s1, const char *search )		{ return strstr( s1, search ); }
    

    wird

    1>SDK\vstdlib/strtools.h(90) : error C2440: 'return': 'const char *' kann nicht in 'char *' konvertiert werden
    1> Durch die Konvertierung gehen Qualifizierer verloren
    

    angezeigt.

    Wie kann ich das richtigstellen?

    mfg richard diang



  • inline int		Q_stricmp( const char *s1, const char *s2 )			{ return stricmp( (char*) s1, (char*) s2 ); }
    inline char*	Q_strstr( const char *s1, const char *search )		{ return strstr( (char*) s1, (char*) search ); }
    

    behuapte ich jetzt mal so...



  • inline const char* Q_strstr( const char *s1, const char *search ){ return strstr( s1, search ); }
    // oder
    inline char* Q_strstr( char *s1, const char *search ){ return strstr( s1, search ); }
    

    zur erklärung: strstr liefert nen pointer auf das "array" s1 zurück. deshalb müssen s1 und der rückgabetyp identisch sein.



  • Dann würde ich die Typen aber dennoch so wählen dass das rauskommt was strstr erwartet.

    inline const char* Q_strstr( const char *s1, const char *search ){ return strstr( s1, search ); }
    // nö, nicht oder :D
    // inline char* Q_strstr( char *s1, const char *search ){ return strstr( s1, search ); }
    


  • dankeschön 😉

    inline char*	Q_strrchr (const char *s, char c)					{ return strrchr( s, c ); }
    

    wie würde ich das am Besten lösen können?

    mfg richard diang



  • kann mir bitte jemand helfen?

    mfg



  • Du kannst Dir die Signatur von strrchr aus jeder Manpage abschreiben. Q_strrchr muss dieselbe Signatur haben. Das sollte zu schaffen sein 😉

    inline const char*    Q_strrchr (const char *s, char c)                    { return strrchr( s, c ); }
    

    EDIT: Nee quatsch, so ist richtig



  • LordJaxom schrieb:

    Du kannst Dir die Signatur von strrchr aus jeder Manpage abschreiben. Q_strrchr muss dieselbe Signatur haben. Das sollte zu schaffen sein 😉

    inline char    Q_strrchr (const char *s, char c)                    { return strrchr( s, c ); }
    

    funktioniert immer noch nicht 😞
    muss doch auch ne andere lösung geben 😕



  • OMG wie schwer kann das sein...

    inline char* Q_strstr( const char *s1, const char *search ) { return strstr( s1, search ); }
    // -> 
    inline const char* Q_strstr( const char *s1, const char *search ) { return strstr( s1, search ); }
    

    p.S.: LordJaxom hat ja schon die Lösung gepostet... der OP sollte wenigstens mal lesen lernen.



  • Dann brauchste aber hinten nicht casten...



  • Ja, sorry, "Schlampigkeitsfehler" beim Kopieren (=hab ich übersehen).
    Ich korrigier das gleich mal... 🙂



  • k ^^

    letztes noch bitte.. hab das noch immer nicht verstanden 😞

    inline char*    Q_strrchr (const char *s, char c)                    { return strrchr( s, c ); }
    


  • kann mir bitte jemand noch ein letztes mal bitte helfen? 😞

    inline char*    Q_strrchr (const char *s, char c)                    { return strrchr( s, c ); }
    

    Wie würde es richtig heissen?

    mfg richard diang



  • richard diang schrieb:

    kann mir bitte jemand noch ein letztes mal bitte helfen? 😞

    inline char*    Q_strrchr (const char *s, char c)                    { return strrchr( s, c ); }
    

    Wie würde es richtig heissen?

    mfg richard diang

    sorry nochmal, aber ich habs noch mal versucht, es scheint einfach zu klappen.

    es ist unmöglich glaub ich zumindestens, es fehlerfrei zu kompilieren. hab nähmlich ein const angehängt(überall) und geht trodzdem nicht 😞



  • sry hab mich verschrieben^^

    hab gemeint,dass es nicht zu klappen scheint.

    wenn jemand eine lösung hätte, so poste er sie bitte 😉

    wäre sehr sehr dankbar 😉

    PS:

    inline char*    Q_strrchr (const char *s, char c)                    { return strrchr( s, c ); }
    

Anmelden zum Antworten