Class instanzieren?!



  • Hallo Leute,

    ich habe jetzt ein Projekt angelegt und möchte eine Klasse instanzieren.
    Aber wie muss ich da vorgehen? Ich habe die Class in einer cpp-Datei, für die Class gibt es keine h-Datei!

    Wie muss ich in der Haupt-CPP-Datei die Class instanzieren?

    Ciao
    Henning



  • Sich mal mit den grundlegenden Grundlagen zu beschäftige wäre eine gute Idee!

    Ohne Header kannst Du eine Instanz der Klasse nur innerhalb der Unit erstellen in der diese deklariert ist (Du kannst die .cpp nicht includieren um den Typ bekannt zu machen.)



  • Knuddlbaer schrieb:

    Sich mal mit den grundlegenden Grundlagen zu beschäftige wäre eine gute Idee!

    Ohne Header kannst Du eine Instanz der Klasse nur innerhalb der Unit erstellen in der diese deklariert ist (Du kannst die .cpp nicht includieren um den Typ bekannt zu machen.)

    Ich werde mir ein Buch kaufen, keine Sorge.

    Wie muss denn die h-Datei für eine Klasse aussehen?

    LG
    Henning





  • Das funktioniert jetzt auch alles und ich habe 2 Forms.

    In der main() wird die Datenbank-Verbindung hergestellt. Nun möchte ich von dem Form, was sich öffnet, auf diese Instanz der Class zugreifen. Wie habe ich das zu realisieren?

    Ciao
    Henning



  • Schau in die FAQ, da findest Du Informationen zum Austausch von Daten zwischen Formen, das kannst Du auch verwenden um Daten von irgendwo in eine Form zu bringen.

    Frage: Hast Du jemals in C++ Programmiert ? Willst Du C++ lernen ? (Dann ist C++/CLI der falsche Weg, da sind dann erst ein paar Konsolenanwendungen angesagt) oder brauchst Du einen schnellen Einstieg in C++/CLI ? Dann wäre VB.NET oder C# besser geeignet (wobei Du auch da erst ein paar Grundlagen brauchst).

    Du musst Dich einfach mit deutlich weniger Regeln auseinandersetzen und hast deutlich weniger Stolperfallen (siehe z.B. hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-173549.html) , erkaufst Dir das aber ggf. mit weniger Flexibilität (die Du aber dank des .Net Frameworks einfach nachschieben kannst).



  • Hallo knuddlbaer,

    danke für deinen sehr hilfreichen Post!
    Ich habe VB.NET und C# intus, die kann ich.

    Ich habe den Eintrag in der FAQ gefunden und habe gesehen, dass ich die Verbindung im Konstruktor übergeben kann. Leider weiß ich nur nicht, wie das mit dem speziellen bei der DB-Verbindung geht.

    Der Konstruktor, an den das übergeben werden soll, sieht so aus:

    Login_Screen(database* dbase)
    		{
    			InitializeComponent();
    			//
    			//TODO: Konstruktorcode hier hinzufügen.
    			//
    
    		}
    

    Er meckert jedoch über die Login_Screen(database* dbase)!
    Fehlermeldung: error C2061: Syntaxfehler: Bezeichner 'database'

    Kannst du letztmalig hier helfen?

    Danke
    henning



  • Hallo,

    ich kenne den Programmaufbau nicht. Du kannst natürlich den Konstruktor der Form verwenden , muss aber die Klasse database auch bekannt machen.

    Ich kann jetzt nur raten (und das liegt mir ganz und garnicht).

    Die Fehlermeldung deutet darauf hin, das der Typ database unbekannt ist. (Btw.: Für den Managedkram musst Du ^ als Zeiger verwenden).

    Wenn database ne eigene Klasse ist, pack die Deklaration in einen Header und includiere diesen an den passenden Stellen.

    Wenn Login_Screen nach deklaration und definition getrennt ist, kannst Du Dir auch mit einer Forwärtsdeklaration helfen , musst aber dann in der Login_Screen.cpp den Header der Klasse deklarieren.

    In C++ ist jede .cpp Datei für sich alleine. Dem C++ Compiler muss man da alles nachtragen und alles bekannt machen. Erst der Linker setzt dann die vielen Bruchstücke aus den .cpp Dateien zusammen.


Anmelden zum Antworten