counter erhöhen
-
Bei mir:
Ich klicke auf den Button im Edit Feld steht eine 1.
Bei akari:
Ich klicke auf den Button im Edit Feld steht eine 1.
-
Linnea möchte, dass du mal nachvollziehst, was der Code selbst macht.
Also quasi den Code nach Deutsch übersetzen. Dann sollte dir eigentlich klarwerden, warum das Ergebnis so ist, wie es ist.
-
Ich weiss doch wieso das s ist -.-
counter+1 = 1
es wird halt um eins erhöht beim ersten klick
-
Kann mir den keiner sagen wie das geht

-
Hallo
Ich habe dir doch schon den kompletten korrekten Code geschrieben, den du nur noch in deine Button-Methode kopieren must. Was stört dich daran?
bis bald
akari
-
wtf jetzt gehts eben ging es net.
ich hab einfach den c builder nochmal neu gestartet.
ty für die hilfe
-
<nörgel>
Auch wenn es trivial ist. Die Lösung von akari ist ja zum einen nicht ganz korrekt, da ja das TEdit "manipuliert" werden kann.
Und es wird hin und her gecastet.
</nörgel>static int counter = 0; Edit1->Text = IntToStr(++counter);
-
Wozu das static? Das verändert den Scope richtig? Dann bleibt der Variableninhalt bis zum nächsten Funktionsaufruf erhalten sagt die Hilfe. Ist das besser als ne private-Membervariable? Oder egal?
-
Das static bewirkt nur das die Variable noch dem verlassen des Scopes nicht aus dem Speicher entfernt wird.
Die Variable existiert aber trotzdem nur in diesem Scope. Von einer anderen Methode aus kannst du darauf nicht zugreifen.
Bei einer Membervariable kannst du von jeder deiner Methoden auf die Variable zugreifen. Sie wird erst gelöscht wenn der Destruktor deiner Klasse aufgerufen wird.
-
Hallo
außerdem hast du eine statische Variable genau einmal pro Klasse, eine (nichtstatische) Membervariable aber pro Klasseninstanz.
bis bald
akari
-
Hmm... mit dem unterschiedlichen Zugriff auf static-Variable und private-Membervariable ist jetzt klar, Danke. Aber das kann doch nicht Alles sein?
Jetzt kam grad akari's Post:
Was ne Klasse ist weiß ich ja, nur mit dem Begriff "Klasseninstanz" tu ich mich schwer... Ich lese so oft von Instanzen, aber so richtig begriffen hab ich's noch nicht.
-
Hallo
// Klasse wird deklariert class Klasse { }; // Instanz von Klasse mit Namen "instanz" wird deklariert und initialisiert Klasse instanz; // Noch eine Instanz derselben Klasse Klasse instanz2;bis bald
akari
-
Cool, Danke! Das ist ja einfach - wenn ich also eine Klasse vererbe, ist die neue Klasse ein Instanz der Ursprungsklasse... Dann weiß ich doch worum es geht

Wenn ich also eine static-Variable in einer Klassenmethode definiere und die Klasse dann vererbe (instanziiere?), greift die Methode der Klasseninstanz auf dieselbe Variable zu wie die Ursprungsklasse (selbe Speicherstelle). Ich kann somit den Inhalt einer Variablen auch vererben. Im Gegensatz dazu wird eine Member-Variable neu angelegt (zusätzliche Speicherstelle). Right? Hab ichs?
-
Hallo
Vererbung hat mit Instanzierung nichts zu tun. Wo siehst du in meinem Code eine Vererbung?
bis bald
akari
-
Ne mit vererben hat das ganze hier noch garnichts zu tun.
Selbst wenn du deine Klasse vererbst kannst du niemals den Inhalt der Membervariablen vererben.
Du definierst in deiner Klasse deine Variable counter.
Dann kannst du 1000 Klassen instanzieren und hast dann insgesamt auch 1000 verschiedene Counter, die nur in der eigenen Instanz gültig sind.
-
Damn, ich hab's geahnt - doch nix begriffen... Ich schau mal bei Wiki, was ne Instanz ist. Dachte das wär ne Kopie der Klasse...

Edit: Also für OttoNormalProleten ist die Instanz(Informatik)-Erklärung bei Wiki nich geschrieben

Eine Folgerung trotzdem: Eine Instanz einer Klasse hat die Eigenschaften der Klasse, ist aber keine neue Klasse und deswegen hat das auch nichts mit Vererbung zu tun... ?
-
Naja in Wiki würde ich da nicht schauen.
Ich würde eher ein Tutorial zu C++ Grundlagen suchen.
-
Hallo
Eine Klasse ist ein Konzept. Eine Instanz ist die konkrete Umsetzung dieses Konzepts mit der du im Arbeitspeicher agieren kannst.
Als Beispiel Mensch und Person :
Der Begriff "Mensch" definiert eine Klasse von Lebewesen mit genau festgelegten Merkmalen, die sie von andern Klassen wie Affen unterscheidet. Eine konkrete Person wie ich zum Beispiel ist eine Instanz dieser Klasse Mensch, nicht identisch mit anderen Personen der gleichen Klasse aber doch durch das gleiche zugrundeliegende Klassenprinzip ähnlich.bis bald
akari
-
Na das meinte ich doch vorhin schon, ich kriegs bloß immer nicht richtig ausgedrückt - Wenn ich ein Objekt (Instanz) mit Hilfe einer Schablone (Klasse) erstelle, dann sah ich das bisher als Vererbung an, wenn das Objekt dann grundlegende Eigenschaften (und Methoden) der Klasse hat und nutzen kann.
Teilweise sind die Begrifflichkeiten ziemlich blöd gewählt finde ich... Wenn ich eine Zeichnung freihand kopiere, "vererbe" ich ja im Prinzip der neuen Zeichnung auch grundlegende Merkmale der Vorlage (Größe, Formen, Farben), obwohl die Kopie der Zeichnung ja eine Instanz der Vorlage ist...
-
Hallo
Nein der Begriff Vererbung ist dafür ganz klar falsch, den Vererbung ist in OOP etwas ganz anderes. Verwende Fachbegriffe nur in der Bedeutung für die sie auch definiert sind.
bis bald
akari