Instanz einer Klasse in einem komplexen Programm



  • Hallo!
    Da mir keine geeigneten Suchbegriffe für mein Problem einfallen, eröffne ich gleich ein neues Thema.
    Ich arbeite zZ an einer MDI Anwendung mit dem BCB 1.0(leider).
    Dazu habe ihc meine Programmstruktur aufgezeichnet:
    http://s1.directupload.net/file/d/2842/86ql4zf5_png.htm
    Ich hoffe es ist verständlich :). Tcntrl enthält je eine Instanz von TCntrlGUI u TCntrlDB. die Formulare greifen auf eine Funktion in Main.h zu, wenn ein Eregniss ausgelöst wurde. Die Funktion in Main.h bereitet ggf die Daten minimal auf und leitet sie sofort an eine Instanz von TCntrl (ebenfalls in Main.h definiert) weiter. TCntrl Verarbeitet die Daten in dem sie entsprch auf die Daten von TCntrlDB zugreift und am Ende (fals etwas angezeigt werden soll) Daten an TCntrlGUI sendet, bzw auf eine Methode der Klasse zugreift, die dann sich um die Formulare kümmert.
    Den Tipp mein Programm so aufzubauen habe ich in einem Praktikum an einer Hochschule bekommen. Deswegen habe ich die Datenverwaltung und die Kontrolle über die Formulare voneinander abgekoppelt und zwischen die Klassen TCntrl gestellt.
    So nun zu meinem Probblem ( 😉 ) : Da es nicht möglich ist in Main.h eine Instanz von TContrl zu initialisieren. Mir scheint es so, als dass es ein Problem mit der Struktur der #include- Dateine gibt. Wenn ihc die Instanz in der .spp Datei initialisiere, dann kennt die Funktion in der .h Datei diese nicht und eine .cpp Datei einfügen bringt mich nur wieder zu dem anfänglichn Fehler. Deswegen ist meine Frage: Wie kann man Variablen aus der .cpp Datei in der .h "sichtbar" machen? Oder gibt es irgendeine andere Möglichkeit mein Projekt zu strukturieren? ICh habe schon drüebr nachgedacht eine "lose" Ansammlung von funktionen in eine .h datei zu schreiben, dachte mir aber, dass es eleganter und effektier ist mit Klassen zuarbeiten, da so Variablen besser Verwaltet werden können, ohne das der Rest des Programmes davon etwas weiß.
    Danke für Antworten 🙂
    mfg firle
    PS:ich habe C++ mit "C++ for Kids" gelernt und habe deswegen leider wenig Ahnung was das C++ nach Iso-Standard angeht. Vllt weiß jmd ein gutes Buch (mit einer etwas neueren Version des BCB :p ), was noch einmal bei den Grundlagen anfängt.



  • Du hast jetzt eine ganze Menge geschrieben - dein Problem wird mir aber ehrlich gesagt nicht ganz klar. Du beschreibst den Sachverhalt recht umständlich, eventuell wäre ein wenig Quellcode sinnvoller, der das Problem zeigt.

    Zu C++-Büchern: Schau mal in die FAQ, dort gibts einen eigenen Thread zu C++-Büchern.



  • sorry..ich habe auch überlegt mit Code zuarbeiten, war mit aber nicht sicher was ich nehmen soll...

    Main.h

    //---------------------------------------------------------------------------
    #ifndef MainH
    #define MainH
    //---------------------------------------------------------------------------
    #include "Cntrl.h"
    //---------------------------------------------------------------------------
    
    TCntrl *CCntrl = new TCntrl ;
    
    //neues MDI Child
    //ID = 0 : Aufmas
    //ID = 1 : Abrechnung
    //ID = 2 : Produkliste Editor
    //ID = 3 : Produkliste Liste
    void NewChild(int ID, String File)
    {
    	CCntrl->NewChild(ID, File);
    };
    
    //---------------------------------------------------------------------------
    #endif
    

    In der Grafik kann man sehen welche Datein wie verknüpft sind.
    Die Error Meldung ist : "Declaration Syntax Error"
    mfg firle



  • firle schrieb:

    PS:ich habe C++ mit "C++ for Kids" gelernt und habe deswegen leider wenig Ahnung was das C++ nach Iso-Standard angeht. Vllt weiß jmd ein gutes Buch (mit einer etwas neueren Version des BCB :p ), was noch einmal bei den Grundlagen anfängt.

    Am besten du ignorierst erst einmal den BCB, C++ lernst du jedenfalls nicht mittels RAD. Zudem halte ich das lernen der VCL für einen Anfänger ohnehin nur eingeschränkt sinnvoll, zumal es keine kostenlose Version mehr gibt (Es gab mal einen etwas abgespeckten Turbo C++ 2006 [oder so ähnlich] der aber inzwischen aus dem Netz entfernt wurde).

    Falls du dennoch fragen zum BCB und der VCL haben solltest, gibt es dafür ein eigenes Unterforum.



  • Am besten lässt du das Entwickeln mit dem Borland/Codegear/Embarcadero Builder ganz sein und benutzt eine andere IDE. Das Microsoft Visual Studio Express gibt´s sogar für die kommerzielle Nutzung kostenlos und mit Qt hast du ein plattformübergreifendes GUI Framework. Code::Blocks könnte ebenfalls ein Blick wert sein, ich weiß allerdings nicht, welches GUI Framework das mitbringt (wxWidgets?).

    Edit:
    Typo fixed



  • OK. eigentlich will ich bie BC++B bleiben, da ich sowieso vorhatte mir dieses Buch zukaufen:
    http://www.amazon.de/mit-Borland-Builder-2007-Xpert-press/dp/3540695753
    da wäre der 2007 builder mitdabei. Mit VS express hab ich mal angefangen (es zumindest installiert) aber irgendwie kam ich damit nicht klar. Außerdem erstelle ich außschließlich Windows Anwendungen und so ganz schlecht is da ide VCL nicht...

    mfg firle



  • Wäre dann C# keine Alternative?



  • Hmmmm hab ich auch schon überlegt, wobei das glaube ich wieder was seehr neues ist, C# ja mit von Java abstammt und ihc mag Java nicht...
    Aber das würde alles nicht mein Problem lösen, da das glaube ich in der Struktur meines Projektes liegt bzw ich irwas nochnit kenne was helfen würde. Die #includes sind irgendwie so angeordnet, dass sich am Ende "die Katzte in den eigenen Schwanz beißt" und damit hat der Compilier ein Problem.
    mfg firle



  • firle schrieb:

    Hmmmm hab ich auch schon überlegt, wobei das glaube ich wieder was seehr neues ist, C# ja mit von Java abstammt und ihc mag Java nicht...

    C# stammt nicht von Java ab, auch wenn es durchaus Ideen von selbigen übernommen hat.

    Nachtrag: Und sehr neu stimmt auch nicht, die Sprache existiert nun auch schon seit knapp über 10 Jahren, auch wenn sie sich schneller weiterentwickelt als beispielsweise C++.

    firle schrieb:

    Aber das würde alles nicht mein Problem lösen,...

    Wenn ich es richtig sehe liegt dein Problem aber an Missverständnissen mit einerseits den Grundlagen der Sprache C++ (wobei du die ohnehin nicht wirklich lernen wirst ohne zuerst auf eine UI zu verzichten, und möglichst auch auf alles was Compilerspezifisch erzeugt wird).

    Ich will dich nicht vom BCB "heilen", aber zum Lernen von C++ ist dieser gänzlich ungeeignet (auch wenn der VC++ nicht gefällt ist dieser für Konsolenprogramme - und darauf sollte man sich anfangs beschränken, solange man noch Probleme mit der Sprache C++ hat - imho besser geeignet [Neues Win32 Projekt ohne precompiled Header oder Implementierung anlegen]).

    Wenn du wirklich auf Biegen und Brechen mit einer UI beginnen willst, solltest du dir eine Sprache anschauen, wo die UI wirklich zum Kern der Standardbibliothek gehört (In C++ gibt es viele, noch dazu auf gänzlich unterschiedlichen Paradigmen aufbauende UI-Frameworks, aber keine davon ist in der Sprache verzahnt).

    Und auch wenn du es nicht hören willst, für dich wäre wohl Java oder C# wesentlich besser geeignet, und wenn du die VCL verwenden willst wäre Delhi vielleicht eine Alternative. Nur wird dir VCL-Wissen in der Praxis nur noch selten von Hilfe sein (Ich kenne kaum noch Firmen die auf den C++ Builder setzen, und auch Delphi ist - auch wenn wesentlich mehr verbreitet als der C++ Builder - auch seit Jahren eher auf dem absteigenden Ast).

    Aber tue was du willst, lernen wie gesagt wirst du so aber nicht C++...



  • Danke, dass ich so eine deutliche Antwort bekommen habe! Es stimmt, meine Gundlagen(wenn man das so nennen kann) reichen nicht aus um solch ien komplexes Projekt zu realisieren... und schon vor einigen Jahren, als ich von C# gehört habe, habe ich drüber nachgedacht umzusteigen, aber habe mich nicht ran getraut. Jetzt aber wo ich langsam nicht mehr weiter komme, werde ich mich wohl ranwagen (müssen). Wahscheinlich war es nötig so auf die Nase zufallen, DANKE.

    mfg firle



  • Gibt es irgendeinen ISO-Standard von C#? Habe irgendwie nur ein Buch für Anfänger gefunden, Wo es aber gleich wieder mit der Programmierung von einer GUI anfängt.

    mfg firle



  • firle schrieb:

    Gibt es irgendeinen ISO-Standard von C#? Habe irgendwie nur ein Buch für Anfänger gefunden, Wo es aber gleich wieder mit der Programmierung von einer GUI anfängt.

    mfg firle

    Bei C# gehört die Gui zur Standartbibliothek, auch wenn es drei Konkurrierende im Standard gibt:
    A Windows Forms (gilt als veraltet, keine Neuerungen mehr)
    B WPF & Silverlight
    C WinRT (aber erst ab dem Kommenden Win8; ähnelt WPF/SL)

    In Büchern wird meist auf A aufgebaut (ich würde Windows Forms aber für neue Projekte eher ausladen). Büchertechnisch kannst du dich gerne mal per Mail an mich wenden, ggf. liegt bei mir noch etwas rum. Bin aber bis Freitag ziemlich zeitlich ausgelastet um konkret etwas zu sagen...



  • ich dachte da an folgendes Buch:
    http://www.amazon.de/Visual-2010-umfassende-Handbuch-Computing/dp/3836215527/ref=cm_cr_pr_product_top
    Ich hätte dieses sonst irgendwo bestellt und gegen freitag abgeholt, weil ich dann 2Wo unterwegs bin.
    danke aber für das angebot ggf werde ich darauf zurück kommen 🙂
    das VS C# express was bei den Büchern dabei ist, ist doch kostenlos oder?

    mfg firle



  • ja, du kannst es dir auch direkt von microsoft ziehen 😃


Anmelden zum Antworten