Methode um Werte in Textdateien zu übergeben

Du bist neu in der Welt von C++? Dann schau hier herein!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Methode um Werte in Textdateien zu übergeben

Beitrag von franzf »

Nun habe ich mit dem Code

Code: Alles auswählen

pEingabe->setText("Hello World");
Schön - leider ist "mit dem Code" bei C++ mit seinen ganzen Klöassen, Namensräumen, ... so ungenau.
main.cpp:10:4: Fehler: »pEingabe« wurde in diesem Gültigkeitsbereich nicht definiert
Und da liegt das Problem: Du weiß nicht was Gültigkeitsbereiche sind. Wo und wie darfst du auf pEingabe zugreifen? Wo ist es TATSÄCHLICH definiert?

Ich denke du würdest dir und uns einen großen Gefallen erweisen, wenn du dich mal ordentlich mit C++-Grundlagen beschäftigen würdest. Die meisten deiner Probleme würden sich nämlich dann von selber lösen, bzw. du würdest sie gar bekomen.
TerraG
Beiträge: 81
Registriert: 13. Oktober 2011 15:23

Re: Methode um Werte in Textdateien zu übergeben

Beitrag von TerraG »

Und da liegt das Problem: Du weiß nicht was Gültigkeitsbereiche sind. Wo und wie darfst du auf pEingabe zugreifen? Wo ist es TATSÄCHLICH definiert?
So stimmt das aber nicht. Ich weiss schon grundlegend was Gültigkeitsbereiche sind. Auf Variablen die z.B. in einer Klasse als public deklariert sind, können auch andere Klassen zugreifen, Variablen die hingegen in der Klasse als private deklariert sind, können nur innerhalb der Klasse verwendet werden. Variablen innerhalb einer Methode gelten nur innerhalb dieser Methode und werden wenn nicht mit static (GEÄNDERT!) deklariert nach ausführung der Methode wieder gelöscht.

Erstmal ist das QLineEdit pEingabe in meiner Basisklasse (die sich aus der UI Datei erstellt) als public deklariert. Meine Subklasse habe ich ja wie hier beschrieben http://developer.qt.nokia.com/doc/qt-4. ... -file.html mit dem "Einfachen Vererbungsansatz" erstellt.

Folgendes habe ich auch noch versucht:

Code: Alles auswählen

Ui_basisclassGUI->pEingabe->setText("Hello World")
bekomme dann aber folgende Fehlermeldung:

Code: Alles auswählen

KuehnikollonenForm.cpp: In Elementfunktion »void GUIsubclassKuehniGUI::LegeVerzeichnisAn()«:
KuehnikollonenForm.cpp:26:33: Fehler: expected unqualified-id before »->« token
Was stimmt, ist, dass ich nicht weiss wie ich auf das Objekt pEingabe erfolgreich zugreifen kann. Vielleicht kann mir jemand sagen wie das funktioniert?
Zuletzt geändert von TerraG am 16. Januar 2012 03:05, insgesamt 1-mal geändert.
Gruß
TerraG
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: Methode um Werte in Textdateien zu übergeben

Beitrag von brax »

TerraG hat geschrieben:
Und da liegt das Problem: Du weiß nicht was Gültigkeitsbereiche sind. Wo und wie darfst du auf pEingabe zugreifen? Wo ist es TATSÄCHLICH definiert?
So stimmt das aber nicht. Ich weiss schon grundlegend was Gültigkeitsbereiche sind.
Ok, grundlegend scheinst Du das mit den Gültigkeitsbereichen halbwegs verstanden zu haben. Was aber noch zu fehlen scheint ist das Verständnis für Objektorientierung als Ganzes. Du hast "pEingabe" als Membervariable (offensichtlich public) in Deiner "Basisklasse" definiert. Dann versuchst Du (laut den Compilerausgaben) einfach so pEingabe in Deiner main() Methode zu benutzen. Dazu brauchst Du aber ein OBJEKT Deiner "Basisklasse" (die, von der pEingabe ein Member ist). Eine Membervariable ist Teil eines OBJEKTES. Du brauchst also ein OBJEKT Deiner KLASSE. Eine KLASSE ist nur ein "Bauplan" für Objekte. Wirklich arbeitet tut man mit Instanzen der Klasse (den OBJEKTEN).

Code: Alles auswählen

Ui_basisclassGUI->pEingabe->setText("Hello World")
bekomme dann aber folgende Fehlermeldung:

Code: Alles auswählen

KuehnikollonenForm.cpp: In Elementfunktion »void GUIsubclassKuehniGUI::LegeVerzeichnisAn()«:
KuehnikollonenForm.cpp:26:33: Fehler: expected unqualified-id before »->« token
Ui_basisclassGUI ist eine Klasse. Du brauchst ein OBJEKT der Klasse.

Das ganze könnte z.B. so aussehen (ganz stark vereinfacht...):

Code: Alles auswählen

class Ui_basisclassGUI {
public:
  // ... Code
  QLineEdit* pEingabe;
  // ... Code
}

// main
int main(int argc, char** argv) {
  // ... Code
  Ui_basisclassGUI basisClassObject;
  basisClassObject.pEingabe->setText("foo");

  // bzw. mit basisClassObject auf dem Heap (an dieser Stelle Unsinn, aber egal):
  Ui_basisclassGUI* pBasisClassObject = new Ui_basisclassGUI();
  pBasisClassObject->pEingabe->setText("foo");  // pEingabe ist jetzt ein anderes pEingabe als 4 Zeilen weiter oben!!!!!
  // ... Code
}
franzf hat schon recht, dass Du Dich vielleicht doch nochmal mehr mit den Grundlagen von C++ und Objektorientierung im allgemeinen auseinandersetzen solltest, bevor Du Dich auf ein so stark objektorientiert designtes Framework wir Qt stürzt.
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: Methode um Werte in Textdateien zu übergeben

Beitrag von brax »

TerraG hat geschrieben:... können auch andere Klassen zugreifen, .... wenn nichtmit typdef deklariert .....
Sorry wegen des doubleposts, aber...... WOW. Ich hab das gerade nochmal gelesen und erst gemerkt was das doch für ein (sorry nochmal) Quatsch ist. Bitte beherzige franzfs gut gemeinten Ratschlag und fang nochmal mit den C++ Grundlagen an. Also das mit dem typedef.... und Klassen die auf andere Klassen zugreifen..... :?
TerraG
Beiträge: 81
Registriert: 13. Oktober 2011 15:23

Re: Methode um Werte in Textdateien zu übergeben

Beitrag von TerraG »

Ja, hab ich verwechselt ich meinte in dem Zusammenhang mit einer lokalen Variable "static" (kann ja mal passieren xD). Ich lese mir jetzt mal ein C++ "Anleitung" durch :mrgreen: .
Gruß
TerraG
Antworten