PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu string und const char *p



f0rtex
07-06-2003, 22:15
Hallo Leute

vielleicht kann mir ja jemand erleuchter wieso folgender code nicht übersetzt wird:


#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:


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

arthur
07-06-2003, 22:45
Person workers[]={"hans", "fritz"};

sowas geht nicht, du kannst nicht ein feld von objekten anlegen
und direkt initialisieren.

gruss
Arthur

tkortkamp
07-06-2003, 23:23
Hi!

Doch kann man, in diesem Fall muss man das aber so machen:


Person workers[]={string("hans"), string("fritz")};


c ya,
Tobias

arthur
07-06-2003, 23:53
hast recht, stimmts :)

gruss
Arthur

f0rtex
08-06-2003, 06:08
@tkortkamp:
Das es mit string() geht, ist mir klar. Müsste der Compiler nicht den const char *p implizit nach string casten?

Danke
f0rtex

anda_skoa
08-06-2003, 11:06
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,
_

f0rtex
08-06-2003, 11:20
Schon wieder etwas Neues gelernt :)

Ein fettes Danke :D

Greets
f0rtex