Vector in Klasse
-
Hallo wenn ich vector<char>var(512); oben in die Klasse reinschreiben dann findet die Funktion function(); die Variable var nicht. Wieso funktioniert das nicht?
Ich habe var jetzt erst mal auf statisch gesetzt so das die Variable nicht jedes mal neu erzeut wird wenn ich function aufrufe.
Aber wie kann ich var in function verwenden wenn var oben in der Klasse deklariert ist?
class test { public: int function(); // vector<char>var(512); erzeugt einen fehler private: }; int test :: function(); { static vector<char>var(512); cout<<">"; cin.getline(&var[0] , 512); return 0; }
-
Immer cool solche Kommentare: "erzeugt einen Fehler". Ja, echt? Ist ja interessant. Ne, es ist wirklich völlig egal welcher, wir sind nämlich alles Hellseher hier.
struct A { std::vector<int> v_; A() : v_(512) {} };
-
Du kannst in der Klassendefinition keinen Wert für den Konstruktor angeben. Du kannst ja genausowenig schreiben:
class foo { int i = 5; // Ich hoffe, du weißt, dass das nicht geht };Deine Klasse braucht einen eigenen Konstruktor, wenn du Variablen initialisieren willst (was übrigens im Allgemeinen eine gute Idee ist!):
class foo { vector<int> bar; public: foo(): bar(512) {} // Google Konstruktor und Initialisierungsliste };P.S.:
cin.getline(&var[0] , 512);
Wie wäre es mit einem std::string?
-
SeppJ schrieb:
Du kannst in der Klassendefinition keinen Wert für den Konstruktor angeben. Du kannst ja genausowenig schreiben:
class foo { int i = 5; // Ich hoffe, du weißt, dass das nicht geht };Doch das geht. http://www2.research.att.com/~bs/C++0xFAQ.html#member-init
-
rüdiger schrieb:
Doch das geht. http://www2.research.att.com/~bs/C++0xFAQ.html#member-init
Ach, C++11 zählt nicht. :p
P.S.: Vor allem, da der Threadersteller es offensichtlich nicht nutzt, sonst würde das ja auch mit vector funktionieren
.
-
SeppJ schrieb:
P.S.:
C/C++ Code:
cin.getline(&var[0] , 512);
C/C++ Code:
cin.getline(&var[0] , 512);Wie wäre es mit einem std::string?
Ich weiss nicht wie ich das hier mit std::string umsetzen kann.
char var[10]; cin.getline(var,10); for(int i=0;i<strlen(var);i++){ var[i] = var[i+2]; } cout<<var;Fehler E2034 115: Konvertierung von 'string' nach 'const char*' nicht möglich in Funktion main()
Fehler E2342 Keine Übereinstimmung des Typs beim Parameter '__s' ('const char *' erwartet, 'string' erhalten) in Funktion main()string var; getline(cin,var); for(int i=0;i<strlen(var);i++){ var[i] = var[i+2]; } cout<<var;
-
std::string str; std::getline(std::cin, str);Ist halt eine freie Funktion.
-
Wo hast du das denn her? Das Lehrmaterial kannst du wegschmeißen.
string var; getline(cin, var); for(int i = 2; i < var.length(); ++i) { var[i-2] = var[i]; } cout << var;
-
Ich vermute, dass
string var; getline(cin, var); var.erase(0, 2);gemeint ist.
-
erase ist genau das was ich gesucht habe.
Danke