globale Variablen in Funktion deklariert
-
ups
ich glaube ich muss mein probelm doch mal genauer beschreiben:Wollte im Prinzip ein gefundenes Beispiel modifizieren.
Also es geht um einen 2-dimensionalen Vector:
std::vector< std::vector<int> > vector_XY; void funktion_1() { for(int i=0; i<5; i++) { std::vector<int> vector_X; vector_XY.push_back(vector_X); } } void funktion_2() { for(int i=0; i<5; i++) { vector_X[i].push_back(xxx); vector_X[i].push_back(yyy); } }
So sieht's im Prinzip aus. Hab jetzt aber mal alles verkürzt und vereinfacht.
Allerdings ist jetzt vector_X in Funktion_2 nicht bekannt (logisch)
Kann aber die Funktionen auch nicht zusammenfassen.Geht das überhaupt so, oder hab ich mir da mal wieder was lustiges ausgedacht?
(wäre nicht das erste mal)
-
Du kannst den vector in der main-Funktion erstellen und ihn dann per Rerferenz an funktion2() übergeben. Dort kannst Du den vector dann ganz normal weiterverwenden.
void function_2(vector<int> &vector_X) { vector_X[i].push_back(xxx); ... } ... int main() { vector<int> vector_X; function_2(vector_X); }
Gleiches gilt natürlich für alle anderen Variablen und Funktionen auch, Du musst die entsprechenden Programmteile dann nur anpassen.
-
hmm
Naja ok ich werd's mal versuchen.
Aber da könnte ich doch auch funktion_2 aus funktion_1 heraus aufrufen und den vector_X übergeben, oder?
-
In C++ macht man für Variablen, die von vielen Funktionen modifiziert wird, auch gerne eine sogenannte Klasse.
Diese hat private Elemente, wobei man nur durch Methoden darauf zugreifen kann.
Das sorgt für Kapselung.
-
Mis2com schrieb:
In C++ macht man für Variablen, die von vielen Funktionen modifiziert wird, auch gerne eine sogenannte Klasse.
Diese hat private Elemente, wobei man nur durch Methoden darauf zugreifen kann.
Das sorgt für Kapselung.Lern coden und plapper keinen Mist rum. Ich glaub Du hast bestimmt noch nie das OCP gelesen, geschweige denn, Du weißt was es überhaupt ist.
@Thema:
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=Global#Answ
-
Hm?
Daran ist nun einmal nichts Falsches, man kapselt Funktionalität und die Funktionalität erfüllt man über die Methoden. basta.
Es gibt zwar auch öffentliche Attribute, aber die werden eigentlich nicht verwendet.
-
Mis2com schrieb:
jetzt hab ich aber die Schnauze voll und zwar gestrichen...
Gut das will ich hoffe, sonst holt man Dich ja nie aus der reserve! Bevor Du überhaupt rum postest wie ein Bescheuerter, solltest Du Dir erstmal richtig sicher sein, was Du da überhaupt postest.
Nimm mal google oder die "The C++-Language" und les es durch, falls Du das Buch nicht haben solltest, was ja sein könnte, dann ist noch immer die MSDN und google da.
-
Lies selbst mal, das hat nichts mit OCP zu tun und ich habe allgemein auf eine Klasse hingewiesen, daran war nichts Falsches, also schweige...
Ansonsten, sag was daran falsch ist, so kann man dich in keinerlei Weise ernst nehmen...
-
Mis2com schrieb:
Und das OCP habe ich in der Tat doch schon einmal gelesen, gr...
Dann les es Dir nochmal durch, denn sonst würdest Du hier nicht so 0815 Fragen stellen nach OOP Konzepten.
Mis2com schrieb:
PS: Was hat das OCP bitte mit diesem Fall hier zu tun?????????????
Ne Menge und würdest Du nicht rumflamen wie ein Bekloppter und mal Nachdenken, würdest Du sehen wieso es wichtig ist!
Achja: Man postet lieber neu, anstatt zu editieren, wo Andere den Überblick verlieren.
-
Ich weiß, dass es wichtig ist, aber meine Aussage war allenfalls unvollständig, nicht falsch.
Dann les es Dir nochmal durch, denn sonst würdest Du hier nicht so 0815 Fragen stellen nach OOP Konzepten.
Total aus dem Kontext gegriffen, in diesem Thread habe ich keine Frage dazu gestellt.
OK, also habe ich alles korrekt gemacht.
-
Mis2com schrieb:
Diese hat private Elemente, wobei man nur durch Methoden darauf zugreifen kann.
Falsch, der Grund? lies "The C++-Language" oder google mal.
Mis2com schrieb:
Das sorgt für Kapselung.
Tilt. Total daneben. Der Grund? Denk mal nach.
-
Eine Klasse ist eine Vorlage für ein Objekt, wenn man diese instanziiert werden die privaten Datenelemente erzeugt und diese kann man durch die Methoden verändern, was ist daran bitte falsch???
Bei Klassen kapselt man außerdem die Funktionalität, d.h. man bietet nicht direkten Zugriff auf die Datenelemente, sondern kann mit denen nur durch bestimmte Funktionen arbeiten, d.h. man kann mit den Methoden der Klasse die Datenelemente bearbeiten, was ist daran bitte falsch???
-
ich glaube Du solltest Dir echt mal "The C++-Language" kaufen.
-
Leider kann ich kein Englisch. :p
-
Mis2com schrieb:
Leider kann ich kein Englisch.
Muhahahha, is doch nicht Dein ernst?
Damit hat sich dieses Problem gelöst.
-
[weg]
-
Komm hör mir mit der "Mitleids-tour" auf die zieht nicht. Jedoch Du hast dort eingesehen das Du noch kein 1337 bist im Geschäft, sondern noch immer ein Neuling
-
Das habe ich auch nie behauptet.
Aber jetzt sag mal bitte deine Definition von einer Klasse.Was soll man denn groß zu einer Klasse sagen?
Eine Klasse stellt etwas dar, was Attribute und Methoden hat. Die Attribute beschreiben dabei die Eigenschaften und Zustände der Klasse. Durch die Methoden verändert man an der Klasse bestimmte Eigenschaften, Zustände oder was auch immer.An Beispielen geht es sowieso:
Ein Ball hat eine bestimmte Position.
Wenn man ihn tritt (treten ist eine Methode), dann verändert sich seine Position.Bei Klassen orientiert man sich meistens an echten Objekten, von denen die Zustände oder eben Eigenschaften davon abhängen, was man mit ihnen macht.
Die Definition erscheint mir logisch, weshalb ist sie dennoch inkorrekt?
MfG MAV
-
Ich hoffe ihr wohnt schön weit voneinander entfernt.
Sonst gibt's irgendwann Tote
-
Lieber wäre es mir, wenn hier mal einer sagen könnte, was die Definition ist, der was von C++ versteht.