testapp : public QMainwindow
mywidget : public QWidget
Add : public mywidget
Sub : public mywidget
Fuer jede Klasse habe ich ein .cpp und ein .h File. Das UI ist ueber den Designer erstellt und wird im Konstruktor von testapp aufgebaut. Im UI gibt es ein lineedit mit dem Namen c1.
In Add.cpp habe ich jetzt folgenden code eingefuegt:
okay WUERDE ich den Code in testapp.cpp haengen klappts.... war sprachlich wohl etwas ungenau.
Tja mit dem deklarieren ist das so eine Sache. Das c1 kommt ueber den designer rein, ich habe es also nirgends expliziert deklariert. Wie soll ich das denn machen?
Da habe ich es doch impliziet mit dem include von testapp.h gemacht. Wenn ich in Add.cpp nun aber #include "testapp.h" rein setze dann bringt mir das rein gar nichts.
Kannst du mir einen noch etwas konkrteren Tip geben?
c1 ist ein Member der Klasse testapp, nicht der Klasse Add, daher dort nicht bekannt. Du könntest Add einen Pointer auf die Instanz von testapp übergeben und dann über diesen auf c1 zugreifen. Wenn es das ist was du möchtest?
Nur wird m.E. die Methode Add::calculate_add() noch nirgends aufgerufen, ....
wird auch nocht nicht aufgerufen. will erstmal das scope Problem loesen.
Der Vorschlag mit dem Pointer, na ja momentan habe ich nur c1, spater habe ich hundert Objekte und dann muss ich irgendwie (wie auch immer) hundert Pointer uebergeben. Das ist irgendwie nicht elegant.
Mir geht es nur darum meinen Sourcecode in verschiedene Files zu verteilen damit hinterher das warten einfacher wird. Bin also offen fuer alle Vorschlaege, der von mir gewaehlte Ansatz wurde mir hier mal vorgeschlagen.
g++ -c -pipe -fno-strict-aliasing -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_SHARED -I/usr/share/qt/mkspecs/default -I. -I/usr/include/QtGui -I/usr/include/QtCore -I/usr/include -I. -I. -I. -o Add.o Add.cpp
Add.cpp:5: error: prototype for ‘Add::Add(testapp*)’ does not match any in class ‘Add’
Add.h:6: error: candidates are: Add::Add(const Add&)
Add.h:8: error: Add::Add()
Add.cpp: In constructor ‘Add::Add(testapp*)’:
Add.cpp:6: error: ‘app’ was not declared in this scope
Add.cpp: In member function ‘void Add::calculate_add()’:
Add.cpp:26: error: ‘app’ was not declared in this scope
make: *** [Add.o] Error 1
Auch wenn du es dir vielleicht nicht vorstellen kannst es gibt Leute die durchaus auch noch Probleme mit c++ haben. Ich hatte meine Frage auch zu erst in einem C++ Forum gestellt, leider konnte man da mit dem Qt Code nichts anfangen. Achso, und nein ich will nicht irgendwelche Kommandozeilentools schreiben, die Anwendung die ich schreiben moechte braucht ein GUI.
Fuer wen meine Frage unter Niveau ist braucht nicht zu antworten, das ist schon okay. Freue mich natuerlich trotzdem ueber sinnvolle Antworten.
Konstruktiver Vorschlag: Wie waers mit einer Kategorie Anfaengerfragen? Dann fuehlt sich im Profiforum vielleicht keiner belaestigt?
Danke,
J.
PS: Man bekommt in C++ Foren auch schonmal die Antwort man solle erst C lernen. Wahrscheinlich wuerde man im C Forum erstmal auf Basic verwiesen und dort dann auf Niki den Roboter.
Der vom Compiler generierte Fehler ist für jemanden, des halbwegs C kann durchaus sehr verständlich, oder was kann man an "error: prototype for ‘Add::Add(testapp*)’ does not match any in class ‘Add’ " nicht verstehen?
Ihr wollt immer alles vorgekaut haben (was man schon daran sieht dass Du einfach per copy'n'paste kopiert hast ohne Dich auch nur im geringsten damit zu befassen, sonst hätte man die Fehlermeldung auch sehr schnell kapiert) - das ist das Problem das ich hier habe. Einen Anfänger bei dem ich sehe dass er sich auch damit befasst was man ihm versucht zu erklären helfe ich gerne.
Ich habe nie behauptet, dass C nicht helfen wuerde was zu verstehen. Ist nur die Frage ob man einem sagt der portugiesich lernen will lern erstmal spanisch und man dem sagt lern erstmal italianisch und dem man soll erstmal latain lernen.
Du hast Recht ich habe copy 'n' paste gemacht, aber wenn mir jemand einen Code anbietet ist das wohl auch der erste Schritt den man macht. Du hast allerdings kein Recht wenn du behauptest ich haette mir keine Gedanken gemacht. Wenn ich das sagen darf halte ich es fuer sehr unhoeflich erstmal anzunehmen man habe nicht nachgedacht oder habe Google nicht bemueht. Man sollte doch erstmal seinem Gegenueber positiv begegnen. Ich bin Anfaegner, ich habe im Schnitt vielleicht in der Woche ca.. 1 Stunde wo ich mich mit dem Thema C++/Qt befassen kann. Ich komme also nur langsam voran.
Wie gesagt ich bin gerne bereit im dummy Forum zu posten. Bin auch gerne bereit wenn ich ein paar Grundgerueste habe einen How to Guide fuer euer Forum zu schreiben "How to start Qt for C++ newbies". Ich glaube das koennte fuer viele Leute hilfreich sein. Wenn einer C++ lernt will er nunmal was machen was sexy ist und das sind GUI Programme und keine Kommandozielen Tools. Vielleicht motiviert das Angebot ja zu etwas unterstuetzung, bin durchaus bereit etwas zurueck zu geben.
Ich bin mir sicher dass du als du C++/Qt gelernt hast dich mit Kollegen/Freunden/Kommilitonen ueber Probleme ausgetauscht hast, da faellt eine dumme Frage nicht schnell auf. Rein ueber Foren zu lernen ist ungleich schwerer.
Ich sehe Du meinst es wirklich ernst. Das ist schön.
Allerdings muss ich nochmal drauf rumhacken - was ist an dieser Fehlermeldung so schlimm bzw. schwer zu verstehen:
prototype for ‘Add::Add(testapp*)’ does not match any in class ‘Add’
Er findet den Prototyp Add:Add(testapp*) nicht in der Klasse Add. Also schaue ich in der Klasse Add nach und siehe da - der ctor ist wirklich nicht da. Also ist da was falsch - entweder im Header oder in Source. Und da der Sinn war testapp der Klasse zu übergeben würde ich sagen der Header war falsch.