probleme bei oop programmierung mit dem datentyp string in der header
-
Hi,
wie kann ich einer Variable einen Stringdatentyp zuweisen? In der Headerdatei geht das irgendwie nicht? Gibt es eine Möglichkeit, das es doch irgendwie geht?
#pragma once #include <string> class fahrzeug { private: int raeder; int gaenge; string typ; //<- funktioniert nicht der compiler mein es feht ein ; vor typ public: fahrzeug(); // konstruktor ~fahrzeug(); // dekonstruktor void info(); // Informationen über das Fahrzeug am Bildschirm ausgeben };Vielen Dank.
MfG,
Cyrill
-
std::string
-
danke dir... d.h. ich muss in der headerfile auch nochmal
using namespace std;schreiben. Wird also nicht übernommen.
Vielen dank für die schnelle Antwort
-
Nein! Niemals using namespace in der Header-Datei! Schreib std::string.
-
Gibt es ein Grund dafür? Dank für die Infos.
-
soll sonst immer der namespace std verwendet wird, wenn jemand deine headerdatei einbindet, und das will man nicht immer
-
Ok danke euch. Sollte man ja wissen

-
Eine Frage:
kann mir jemand sagen wann man friend benutzt? Benutzt man doch dann wenn man auf private Attribute zugreifen will.
Verstehe es aber noch nicht ganz.
Ich hab mal hier zum Test ein kleines Programm geschrieben, aber ich kann auf private Attribute zugreifen.
header.h:
#pragma once class objekt { private: int wert; int erg; public: objekt(); ~objekt(); int rechne(objekt, objekt); void setwert(int); };main.cpp:
#include <iostream> #include "header.h" using namespace std; void main() { objekt a1, a2, a3; a1.setwert(5); a2.setwert(3); cout << "Wert : " << a3.rechne(a1,a2) << endl; } objekt::objekt() { wert = 0; erg = 0; } objekt::~objekt() {} int objekt::rechne(objekt a, objekt b) { erg = a.wert + b.wert; return erg; } void objekt::setwert(int a) { wert = a; }ab hier sollte es doch scheitern,oder? erg = a.wert + b.wert;
Wahrscheinlich nicht weil ich das Objekt übergeben hab. Kann mir jemand ein Beispiel machen wo ich friend benutzen muss?
MfG,
Cyrill
-
klassen sind tatsächlich immer "friend" mit sich selbst, weshalb aus memberfunktion heraus auch auf private member anderer instanzen derselben klasse zugegriffen werden darf.
friend ist dann "nötig", wenn man zwei (oder mehr) verschiedene klassen hat, die gegenseitig auf private member zugreifen müssen.
das nötig ist in anführungszeichen, da es bei sauberer OOP nie nötig sein wird, auf "fremde" private member zugreifen zu müssen. das ist frickelei, die datenkapselung unterminiert.