Anzeige:
Ergebnis 1 bis 5 von 5

Thema: [C++] invalid conversion from 'const char*' to 'char*'

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.06.2003
    Beiträge
    13

    [C++] invalid conversion from 'const char*' to 'char*'

    hab nen array als constant deklariert (weil in diesem array nicht weiter reingeschrieben werden soll uns zu sicherheit das mir das mal nicht ausversehen passiert):

    PHP-Code:
    #include <iostream>

    #define MAX 9

    using namespace std;

            .
            .
            .

    const 
    char MyArray[MAX][8] = {
                                    {
    "Hello"},
                                       {
    "Folks"},
                                    {
    "Welcome"},
                                    {
    "in"},
                                    {
    "my"},
                                    {
    "World"}
                                                };
            .
            .
            .

    class 
    CMyClass {

            .
            .
            .         

        public:
        
    bool MyFunction(string WertcharReturnWert);

            .
            .
            .

    }; 
    dann hab nen function wo ein übergebener wert mit dem den werten im array verglichen wird und wenn der vergleich erfolgreich war wird der werd aus dem array zurückgegeben.

    PHP-Code:
            .
            .
            .

    bool CMyClass::MyFunction(string WertcharReturnWert) {
        
    int nLoop;

        for (
    nLoop 0nLoop <= 3nLoop++) {
            if (
    == Wert.find(MyArray[nLoop])) {
                
    ReturnWert MyArray[nLoop];
                return 
    true;
            }
        }

        return 
    false;
    }

            .
            .
            . 
    mein problem is ebend das ich immer die fehlermeldung :

    invalid conversion from 'const char*' to 'char*'

    vom compiler bekomme. ist ja auch ok, aber wie bekomme ich das nu hin?? oder stell ich mich einfach nur zu doof an (ja ich weis daran wird es bestimmt liegen )??

  2. #2
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    Code:
    bool CMyClass::MyFunction(const string& Wert, char** ReturnWert) {
        int nLoop;
    
        for (nLoop = 0; nLoop <= 3; nLoop++) {
            if (0 == Wert.find(MyArray[nLoop])) {
                *ReturnWert = (char*)MyArray[nLoop];
                return true;
            }
        }
    
        return false;
    }
    nachtrag:
    jetzt sollte es gehen und hier noch der aufruf:

    Code:
    char *pointer;
    xxxx.MyFunction("xxxxx", &pointer);
    cout<<pointer<<endl;
    das problem war nicht einmal das const, sondern die übergabe der parameter
    per value, wodurch die zuweisung ReturnWert = xxxx nichts bringt, deswegen char** damit übergebe ich einen zeiger auf den char* und die methode kann dann
    in diese adresse was reinschreiben.

    gruss
    Arthur
    Geändert von arthur (15-06-2003 um 22:10 Uhr)
    ---------
    irc.mrunix.de #mrunix

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.06.2003
    Beiträge
    13
    jetzt kommt "can not convert 'const char (*)[8]' to 'char**' in assignment ... bei "cCommand = &caCommands[nLoop];"
    Geändert von Pinocchino (15-06-2003 um 21:44 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.06.2003
    Beiträge
    13
    jetzt läuft alles durch er gibt mir zwar noch eine warnung raus :

    cast to pointer from interger of different size

    aber immer wenn ich jetzt auf den zurückgegebenen wert "cout<<pointer<<endl;" zugreifen will bekomme ich einen speicherzugriffsfehler.

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.06.2003
    Beiträge
    13
    sorry war mein fehler ... hat sich erledigt ...

    danke für deine hilfe

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •