Mehr als 1 Form



  • Hi,

    Also ich bin noch nicht wirklich gut in C++ aber für das was ich damit erreichen will reicht es bloß ich hab ein problem. Und zwar das wenn ich mehr als 1 Form drin hab und ich zwischen den per button klick wechseln will gibt es beim Compilen einen Fehler. Das heißt wenn ich in Form 1 auf einnen Button klicke soll ich zu Form 2 komm und das gleiche bei Form 2 zu 1. Wenn ich nur einen Button von form 1 zu Form 2 habe zeigt der Compiler keinen Fehler an wenn ich aber den button in Form 2 drin hab und von Form 1 kommt ein Fehler. Verwenden tu ich VC++ 2008. Ich habe in jeder Form die stdafx.h includiert und in der stdafx sind die Formen includeiert. HIer einmal der Code:

    #pragma once
    #include "Haupt.h"
    #include "Form1.h"
    

    und das steht jeweils bei den Buttons:
    von Form1:

    Haupt^ FHaupt = gcnew Haupt();
    FHaupt->Show();
    

    von Form 2:

    Form^ FF1 = gcnew Form1();
    FF1->Show();
    

    Der fehler vom Compiler:
    " Errosr C2061: Syntaxfehler: Bezeichner "Form1""

    Könnt ihr mir helfen

    Danke schonmal im Vorraus



  • Also ich bin noch nicht wirklich gut in C++ aber für das was ich damit erreichen will reicht es bloß ich hab ein problem.

    C++? Macht nichts - denn das was Du jetzt programmierst ist C++/CLI. Das ist eine andere Sprache als C++.

    Vermutlich fehlt in Form2.cpp ein #include "Form1.h".



  • Hallo Tim2m,

    du hast einen typischen C++ Cross-Include Fehler drin.
    Ich nehme mal an, du hast deine Forms nicht in Implementations- und Header-Dateien unterteilt? (Das ist einer der Gründe warum der Form-Desinger bei C++/CLI völlig daneben ist, da er standardmäßig nur eine Headerdatei anlegt!).

    Entferne also die Form-Includes aus der stdafx.h und binde sie manuell richtig ein!

    Und auch wenn es schon zig-mal gepostet wurde:
    Nimm für GUI-Programmierung C# anstatt C++/CLI, s.a. Windows Forms und Visual C++ MACHT KEINEN SINN!



  • Ja meine Header- und Implementationsdateien sind nicht getrrennt was die Formen betrifft. Aber was meinst du jetzt mit manuell richtig includieren. Falls du meinst das ich z.B. in der Form1.h die 2. Form includieren soll und umgekehrt das hab ich schon probiert und da kommt der gleiche fehler. Soll ich die .cpp-dateien der Formen von den headerdateien trennen?



  • Soll ich die .cpp-dateien der Formen von den headerdateien trennen?

    Ja.



  • Hilft auch nicht weiter. Der gleiche Fehler immer noch. Und der Fehler kommt ja auch nur wenn ich diesenn Code bei 2 Formen reinschreib bzw. auf mehr als 1 Form verweis. Sonst geht das alles.



  • Tim2m schrieb:

    Hilft auch nicht weiter. Der gleiche Fehler immer noch. Und der Fehler kommt ja auch nur wenn ich diesenn Code bei 2 Formen reinschreib bzw. auf mehr als 1 Form verweis. Sonst geht das alles.

    Ich weiss jetzt halt nicht was Du gemacht hast... Zeige den Code.



  • ICh hab halt die Haupt.cpp und die Form1.cpp in einen anderen ordner geschoben und Haupt.h in Form1.h direkt includier sowie in Haupt.h Form1.h includiert.

    Oberster ausschnitt Form1.h:

    #pragma once
    #include "Haupt.h"
    

    Oberster ausschnitt Haupt.h:

    #pragma once
    #include "Form1.h"
    

    Ausserdem hab ich die includierungen in der Stdafx.h gelöscht



  • Hallo Tim2m,

    du darfst dann nur in den CPP-Dateien die anderen Header 'include'n.
    Und in den Headerdateien dann nur Vorwärtsdeklarationen (forward declarations) verwenden (außer du benötigst die komplette Klassendefinition z.B. beim Vererben oder als eingebetteter Member, dann aber nur in eine Richtung includen).

    Bis du dir wirklich sicher, daß du dir C++/CLI antun willst und nicht entweder natives C++ oder aber entspannte GUI-Programmierung mittels C# ???



  • Ja eigentlich wollte ich damit erstmal weiter machen.

    Wenn ich das in den .cpp dateien includiere gibt es den gleichen fehler. Kann ich formen auch vorwärts deklarieren und wenn ja wie? Will endlich eine lösung dafür finden. Ich hab schon so viele Projekte wegen diesen einen fehler verworfen.



  • Guck hier mal, wenn Du damit nicht zurecht kommen solltest, sag kurz bescheid.

    http://www.c-plusplus.net/forum/260545?highlight=form1+form2

    Gruß

    Doug_HH



  • Danke, Danke, danke. Endlich funktioniert es. Vielen Dank für eure Hilfe. So wie in den Link beschreiben die Button-Funktion in die .cpp verschieben und schon funktionierts.


Anmelden zum Antworten