Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Frage zu string und const char *p

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.07.1999
    Ort
    Zürich
    Beiträge
    221

    Frage zu string und const char *p

    Hallo Leute

    vielleicht kann mir ja jemand erleuchter wieso folgender code nicht übersetzt wird:
    Code:
    #include <iostream>
    
    using namespace std;
    
    class Person
    {
        private:
            string name;
        public:
            Person(string n):name(n){}
            string getName(){return name;}
    };
    
    int main() {
            Person workers[]={"hans", "fritz"};
            cout << workers[1].getName() << endl;
            return 0;
    }
    Ich bekomme folgende Fehlermeldung:
    Code:
    tmp.cpp: In function `int main()':
    tmp.cpp:15: error: conversion from `const char[5]' to non-scalar type `Person' 
       requested
    tmp.cpp:15: error: conversion from `const char[6]' to non-scalar type `Person' 
       requested
    Müsste const char *p nicht implizit nach string convertiert werden?

    greets
    f0rtex
    Doctrína est fructus dulcis radícis amárae.

  2. #2
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    Person workers[]={"hans", "fritz"};
    sowas geht nicht, du kannst nicht ein feld von objekten anlegen
    und direkt initialisieren.

    gruss
    Arthur
    ---------
    irc.mrunix.de #mrunix

  3. #3
    Registrierter Benutzer
    Registriert seit
    10.04.2001
    Ort
    Bremen
    Beiträge
    339
    Hi!

    Doch kann man, in diesem Fall muss man das aber so machen:
    Code:
    Person workers[]={string("hans"), string("fritz")};
    c ya,
    Tobias

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    hast recht, stimmts

    gruss
    Arthur
    ---------
    irc.mrunix.de #mrunix

  5. #5
    Registrierter Benutzer
    Registriert seit
    04.07.1999
    Ort
    Zürich
    Beiträge
    221
    @tkortkamp:
    Das es mit string() geht, ist mir klar. Müsste der Compiler nicht den const char *p implizit nach string casten?

    Danke
    f0rtex
    Doctrína est fructus dulcis radícis amárae.

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von f0rtex
    @tkortkamp:
    Das es mit string() geht, ist mir klar. Müsste der Compiler nicht den const char *p implizit nach string casten?
    Er hat keinen direkten Weg von char* nach Person.

    Eine Stufe kann der Compiler schon automatisch machen, also wenn zB ein string erwartet wird und ein char* vorhanden ist, oder eben wenn ein string vorhanden ist und ein Person Objekt erwartet wird.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    04.07.1999
    Ort
    Zürich
    Beiträge
    221
    Schon wieder etwas Neues gelernt

    Ein fettes Danke

    Greets
    f0rtex
    Doctrína est fructus dulcis radícis amárae.

Lesezeichen

Berechtigungen

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