-
11.11.11 08:31 #16
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Ich hab mir dein Projekt mal angeschaut. Bitte bereinige es das nächste Mal (12KiB statt 794KiB
) bevor du es zippst und häng es bitte das nächste Mal einfach hier an anstatt einen Filehoster zu verwenden.
Das public bei den Vorwärtsdeklarationen muss weg und auch die Angabe der Superklasse:
GrußCode cpp:1 2 3
namespace MemorieC { ref class Karte; }
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Wow.
So einfach kanns sein.
Vielen lieben Dank deepthroat!
-
Kaum klappt was stoß ich auf das gleiche Problem noch einmal...:
Dieses Mal in der Form1.h:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
#ifdef FORM1_H namespace MemorieC { ref class Form1; } #else #define FORM1_H #include "Memorie.h"; namespace MemorieC { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Zusammenfassung für Form1 /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::MenuStrip^ menuStrip1; private: System::Windows::Forms::ToolStripMenuItem^ neuesSpielToolStripMenuItem; private: System::Windows::Forms::Panel^ panel1; protected: private: /// <summary> /// Erforderliche Designervariable. /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// </summary> void InitializeComponent(void) { this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip()); this->neuesSpielToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); this->panel1 = (gcnew System::Windows::Forms::Panel()); this->menuStrip1->SuspendLayout(); this->SuspendLayout(); // // menuStrip1 // this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(1) {this->neuesSpielToolStripMenuItem}); this->menuStrip1->Location = System::Drawing::Point(0, 0); this->menuStrip1->Name = L"menuStrip1"; this->menuStrip1->Size = System::Drawing::Size(292, 24); this->menuStrip1->TabIndex = 0; this->menuStrip1->Text = L"menuStrip1"; // // neuesSpielToolStripMenuItem // this->neuesSpielToolStripMenuItem->Name = L"neuesSpielToolStripMenuItem"; this->neuesSpielToolStripMenuItem->Size = System::Drawing::Size(74, 20); this->neuesSpielToolStripMenuItem->Text = L"Neues Spiel"; this->neuesSpielToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::neuesSpielToolStripMenuItem_Click); // // panel1 // this->panel1->Location = System::Drawing::Point(12, 27); this->panel1->Name = L"panel1"; this->panel1->Size = System::Drawing::Size(268, 227); this->panel1->TabIndex = 1; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(292, 266); this->Controls->Add(this->panel1); this->Controls->Add(this->menuStrip1); this->MainMenuStrip = this->menuStrip1; this->Name = L"Form1"; this->Text = L"Memorie C++"; this->menuStrip1->ResumeLayout(false); this->menuStrip1->PerformLayout(); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void neuesSpielToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { //MessageBox::Show("Test"); } }; } #endif
Hier die neue Memorie.h
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#ifdef MEMORIE_H namespace MemorieC { ref class Memorie; } #else #define MEMORIE_H #include "Karte.h" #include "Form1.h" namespace MemorieC { using namespace System::Collections::Generic; public ref class Memorie { //Attribute private: int paare; //Anzahl der Paare im Spiel int gefundenePaare; //Anzahl der gefundenen Paare List<Karte^>^ kartenListe; // die Liste | zweimal das „^“ weil es 2 Klassenverweise sind Karte^ letzteKarte; //die Karte, die gerade umgedreht wurde Karte^ letzteKarte2; //Hilfsvariabel, hab ich keine besser Lösung für gefunden Form1^ form; //Die Form, auf der die Karten angezeigt werden sollen bool warten; // gibt an, ob Karten gerade umgedreht wurden und deswegen gleich automatischen umgedreht werden. Solange muss der Spieler warten! Timer^ timer; // der Timer, der genutzt wird, um den Spieler warten zu lassen. static int wartezeit = 500; //Wartezeit = 500ms = 0,5s public: static String^ PicturePath = Application::StartupPath + "\\"; //Hierraus werden alle Bilder geladen. Also der Pfad wo die Exe liegt. Man kann hier noch Unterordner angeben. Bsp: [...] + "\\Bilder\\"; //Konstruktoren public: Memorie(int anzahlPaare, Form1^ anzeigeForm); }; } #endif
und die Fehler:
Code :1 2 3 4 5 6 7 8 9
Fehler 4 error C2143: Syntaxfehler: Es fehlt ';' vor '^' d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 26 1 MemorieC++ Fehler 7 error C2143: Syntaxfehler: Es fehlt ';' vor '^' d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 29 1 MemorieC++ Fehler 10 error C2653: 'Application': Keine Klasse oder Namespace d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 29 1 MemorieC++ Fehler 12 error C3845: "MemorieC::Memorie::PicturePath": Nur statische Datenmember können innerhalb einer Verweisklasse oder eines Werttyps initialisiert werden. d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 29 1 MemorieC++ Fehler 5 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 26 1 MemorieC++ Fehler 6 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 26 1 MemorieC++ Fehler 8 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 29 1 MemorieC++ Fehler 9 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 29 1 MemorieC++ Fehler 11 error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. d:\desktop\fuer nele und kai-lea\memoriec++\memoriec++\Memorie.h 29 1 MemorieC++
-
11.11.11 10:33 #19
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Ist bei Fehler 4 Zeile 26 diese gemeint:
Dann ist vermutlich der Typ Timer nicht bekannt.Code cpp:1
Timer^ timer; // der Timer, der genutzt wird, um den Spieler warten zu lassen.
Das gleiche für Zeile 29. String ist nicht bekannt. Meintest du System::String?
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Diese Fehler traten vorher nicht auf, die using Verweise sind ja da.
treten erst auf, seit Memorie.h und Form1.h sich kennen.
Form1.h Zeile 16
enthält den Timer.Code :1
using namespace System::Windows::Forms;
Also die usings sind im gleichen namespace, sollte er also kennen...
Ah, während ich den Text hier geschrieben habe ist mir die idee gekommen.
Habe die using Verweise der Form1.h nicht nur im else Zweig verwendet.
klappt so.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
#ifdef FORM1_H namespace MemorieC { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; ref class Form1; } #else #define FORM1_H #include "Memorie.h"; namespace MemorieC { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Zusammenfassung für Form1 /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: Konstruktorcode hier hinzufügen. // } protected: /// <summary> /// Verwendete Ressourcen bereinigen. /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::MenuStrip^ menuStrip1; private: System::Windows::Forms::ToolStripMenuItem^ neuesSpielToolStripMenuItem; private: System::Windows::Forms::Panel^ panel1; protected: private: /// <summary> /// Erforderliche Designervariable. /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// Erforderliche Methode für die Designerunterstützung. /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. /// </summary> void InitializeComponent(void) { this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip()); this->neuesSpielToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem()); this->panel1 = (gcnew System::Windows::Forms::Panel()); this->menuStrip1->SuspendLayout(); this->SuspendLayout(); // // menuStrip1 // this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(1) {this->neuesSpielToolStripMenuItem}); this->menuStrip1->Location = System::Drawing::Point(0, 0); this->menuStrip1->Name = L"menuStrip1"; this->menuStrip1->Size = System::Drawing::Size(292, 24); this->menuStrip1->TabIndex = 0; this->menuStrip1->Text = L"menuStrip1"; // // neuesSpielToolStripMenuItem // this->neuesSpielToolStripMenuItem->Name = L"neuesSpielToolStripMenuItem"; this->neuesSpielToolStripMenuItem->Size = System::Drawing::Size(74, 20); this->neuesSpielToolStripMenuItem->Text = L"Neues Spiel"; this->neuesSpielToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::neuesSpielToolStripMenuItem_Click); // // panel1 // this->panel1->Location = System::Drawing::Point(12, 27); this->panel1->Name = L"panel1"; this->panel1->Size = System::Drawing::Size(268, 227); this->panel1->TabIndex = 1; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(292, 266); this->Controls->Add(this->panel1); this->Controls->Add(this->menuStrip1); this->MainMenuStrip = this->menuStrip1; this->Name = L"Form1"; this->Text = L"Memorie C++"; this->menuStrip1->ResumeLayout(false); this->menuStrip1->PerformLayout(); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void neuesSpielToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { //MessageBox::Show("Test"); } }; } #endif
Nochmal danke für die ganze Hilfe!
-
11.11.11 11:59 #21
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Wenn du die using namespace Anweisungen in beiden Fällen brauchst, kannst du die Anweisungen auch komplett vor das #if ziehen:
GrußCode cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
namespace MemorieC { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; #ifdef FORM1_H ref class Form1; #else # define FORM1_H public ref class Form1 : ... #endif } // namespace MemorieC
Geändert von deepthroat (11.11.11 um 13:47 Uhr) Grund: denglisch
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
stimmt, danke sieht schöner aus.
Ähnliche Themen
-
Problem beim Login in den SQL Server, bzw. generelles Problem auf Datenbankzugriff
Von Trigoor2 im Forum .NET DatenverwaltungAntworten: 7Letzter Beitrag: 25.10.11, 08:29 -
Wie weise ich nach: Browser Problem oder Code Problem?
Von Steb im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 10.03.11, 20:09 -
[IE7 Problem] Problem mit ul/li Höhen im IE7 bei Verwendung eines vertikalen Menüs
Von josDesign im Forum CSSAntworten: 0Letzter Beitrag: 11.01.11, 21:40 -
Problem: Flash MX (7.1) exportiert meine Fla nicht mehr - dringendes Problem
Von Lukasz im Forum Flash PlattformAntworten: 4Letzter Beitrag: 22.03.06, 20:50 -
Problem mit PopUp (Ja ich weiss Suche benutzten, hab ein ganz anderes Problem)
Von killkrog im Forum Javascript & AjaxAntworten: 6Letzter Beitrag: 13.06.02, 12:29



7Danke

Zitieren
Login





