tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
21
ZUGRIFFE
958
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    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:
    Code cpp:
    1
    2
    3
    
    namespace MemorieC {
      ref class Karte;
    }
    Gruß
    Klopfer91 bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  2. #17
    Klopfer91 Klopfer91 ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    18
    Wow.
    So einfach kanns sein.
    Vielen lieben Dank deepthroat!
     

  3. #18
    Klopfer91 Klopfer91 ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    18
    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++
    Angehängte Dateien Angehängte Dateien
     

  4. #19
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Ist bei Fehler 4 Zeile 26 diese gemeint:
    Code cpp:
    1
    
    Timer^ timer; // der Timer, der genutzt wird, um den Spieler warten zu lassen.
    Dann ist vermutlich der Typ Timer nicht bekannt.

    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.

  5. #20
    Klopfer91 Klopfer91 ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    18
    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
    Code :
    1
    
    using namespace System::Windows::Forms;
    enthält den Timer.

    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.
    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
    klappt so.
    Nochmal danke für die ganze Hilfe!
     

  6. #21
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    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:
    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
    Gruß
    Geändert von deepthroat (11.11.11 um 13:47 Uhr) Grund: denglisch
    Klopfer91 bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #22
    Klopfer91 Klopfer91 ist offline Mitglied
    Registriert seit
    Nov 2011
    Beiträge
    18
    stimmt, danke sieht schöner aus.
     

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 25.10.11, 08:29
  2. Wie weise ich nach: Browser Problem oder Code Problem?
    Von Steb im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 10.03.11, 20:09
  3. Antworten: 0
    Letzter Beitrag: 11.01.11, 21:40
  4. Antworten: 4
    Letzter Beitrag: 22.03.06, 20:50
  5. Antworten: 6
    Letzter Beitrag: 13.06.02, 12:29

Stichworte