Wieso werden meine Variablen nicht erkannt (c++)?
Grüßt euch ihr Lieben,
ich wollte einen Standartkonstruktor aufrufen, aber mein Compiler sagt, dass die Variablen nicht deklariert seien. Ich habe mich aber an alle Gesetze gehalten, dass macht alles kein Sinn. Vielleicht hat jemand kurz Zeit und könnte mir schnnell mal ein Lösungvorschlag anbieten.
Lg
#include <iostream>
#include <sstream>
using namespace std;
class Customer{
public:
Customer();
string Ausgabe(){
number = to_string(number);
postCode = to_string(postCode);
return number + name + postCode + domiciler;
}
};
Customer::Customer(){
int number = 33333;
string name = "Anna";
int postCode = 39100;
string domiciler = "Schöndorf";
}
int main(){
Customer susi;
cout<<susi.Ausgabe();
return 0;
}
#include <iostream>
#include <sstream>
using namespace std;
class Customer{
public:
Customer();
string Ausgabe(){
number = to_string(number);
postCode = to_string(postCode);
return number + name + postCode + domiciler;
}
};
Customer::Customer(){
int number = 33333;
string name = "Anna";
int postCode = 39100;
string domiciler = "Schöndorf";
}
int main(){
Customer susi;
cout<<susi.Ausgabe();
return 0;
}
2 Antworten
Nö, die variablen sind nicht deklariert.
Variablen gelten immer nur in dem block in dem sie deklariert werden und dadrunterliegenden. Wenn du also
beispiel() {
int nummer = 3;
}
example() {
int nummer = 5;
}
Hast, dann hast du zwei unterschiedliche variablen die beide nummer heißen. Du könntest in einer dritten methode nicht auf den wert zugreifen.
Wenn du aber sowas hast
int nummer;
beispiel() {
nummer = 3;
}
example() {
nummer = 5;
}
Dann hast du eine variable und änderst den wert. Auf den könntest du auch mit einer anderen methode zugreifen.
Daher solltest du die variablen vemutlich außerhalb der methode deklarieren in deinem fall.
Stimmt natürlich, aber ich weiß ja nicht was er damit meint in diesem fall.
Interessante idee, aber sowas könnnen ide's ganz gut anzeigen heutzutage.
Wie immer: Fehlermeldungen dazupacken!
Dein Problem liegt im Scoping:
Customer::Customer(){
int number = 33333;
string name = "Anna";
int postCode = 39100;
string domiciler = "Schöndorf";
}
number und postCode existieren nur in dieser Methode.
Und mach dir (und denen die den Code lesen) das Leben einfacher und verwende lange Variablen, also statt "nummer" die ganze Bezeichnung wie "Telefonnummer".
Ich mache auch immer einen Kommentar ans Ende eines Blockes, wie z.B.
} //main
damit ich immer weiss welche Klammer zu welcher Funktion gehört.