Hallo, Ich habe folgende Klasse in c++: class person { public: string GetName (); void SetName (string name_); private: string name_; }; In dieser möchte ich eine Funktion SetName () und GetName() erstellen. Ich habe mir gedachte, dass ich SetName so schreibe: void SetName () { cout << "A name please: " << endl; //Name wird gefordert cin >> this -> name_; //Liest Namen ein und übergibt ihn an //_name } string GetName (string _name) { return name_; } ist das korrekt?
Die Methoden und ihre Signaturen sollten schon zusammenpassen. Und syntaktisch geht das so nicht, weil der Compiler bei der Methodendefinition die Zuordnung zur Klasse nicht erkennt (person:: davor).
Hallo, Ich habe folgende Klasse in c++: class person { public: string GetName (string name_); void SetName (); private: string name_; }; In dieser möchte ich eine Funktion SetName () und GetName() erstellen. Ich habe mir gedachte, dass ich SetName so schreibe: void SetName () { cout << "A name please: " << endl; //Name wird gefordert cin >> this -> name_; //Liest Namen ein und übergibt ihn an //_name } string GetName (string _name) { return name_; } ist das korrekt?
Hallo, Ich habe folgende Klasse in c++: class person { public: string GetName (string name_); void SetName (); private: string name_; }; In dieser möchte ich eine Funktion SetName () und GetName() erstellen. Ich habe mir gedachte, dass ich SetName so schreibe: void person::SetName () { cout << "A name please: " << endl; //Name wird gefordert cin >> this -> name_; //Liest Namen ein und übergibt ihn an //_name } string person::GetName (string _name) { return name_; } ist das korrekt?
Schon besser, aber normalerweise macht man das einlesen in ner anderen Funktion. Dort ruft man dann SetName auf. Das hat vor allem den Vorteil, dass man dann deutlich flexibler ist und nicht z.b. ne 2te SetName schreiben muss, wenn man das nicht per Tastatureingabe macht.
26 C:\Dev-Cpp\C von A bis Z\EM 2008\em_2008.h no `std::string Person::GetName(std::string)' member function declared in class `Person' die fehlermeldung bekomme ich :(
Wenn ich nun in der main Fuktion GetName und SetName aufrufen möchte, dann schreibe ich doch: person::GetName(); person::SetName(); oder
Normalerweise legst du vorher ein Objekt an über dass dann auf die get- und set Operation zugegriffen wird.
Wie meinst du das ? Habe c++ die Klasse noch nicht wirklich verstanden.Habe bisher C programmiert. Könntest die Main mir hinschreiben bzw wo du den Fehler siehst
Bin zwar auch kein C++ Experte, aber: class person { public: void setName(String name); String getName(void); private: Sring name_; } void person::setName(String name) { name_ = name; } void person::getName() { return name_; } int main() { person einePerson; einePerson.setName("Paul"); cout << "Die Person heißt:" << einePerson.getName(); return 0; } Keine Garantie auf absolute Korrektheit, aber so sollte es zumindest von der Grundidee passen.
Noch ein bischen schöner:
1 | #include <string> |
2 | #include <iostream> |
3 | using namespace std; |
4 | |
5 | class person { |
6 | public:
|
7 | void setName(const string & name); |
8 | const string & getName() const; |
9 | |
10 | private:
|
11 | string name_; |
12 | };
|
13 | |
14 | void person::setName(const string & name) { |
15 | name_ = name; |
16 | }
|
17 | |
18 | const string & person::getName() const { |
19 | return name_; |
20 | }
|
21 | |
22 | |
23 | int main() { |
24 | person einePerson; |
25 | |
26 | einePerson.setName("Paul"); |
27 | cout << "Die Person heißt:" << einePerson.getName() << endl; |
28 | |
29 | return 0; |
30 | }
|
Danke. Das kompeliert er aber nicht.Fehlermeldungen: 14 C:\Dev-Cpp\C von A bis Z\main.cpp new types may not be defined in a return type 14 C:\Dev-Cpp\C von A bis Z\main.cpp two or more data types in declaration of `setName' 14 C:\Dev-Cpp\C von A bis Z\main.cpp prototype for `person person::setName(const std::string&)' does not match any in class `person' 7 C:\Dev-Cpp\C von A bis Z\main.cpp void person::setName(const std::string&) 14 C:\Dev-Cpp\C von A bis Z\main.cpp `person person::setName(const std::string&)' and `void person::setName(const std::string&)' cannot be overloaded
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.