Klopfer91
Grünschnabel
Moin moin,
bin eigentlich eingefleischter C# nutzer, aber muss diesesmal etwas in C++ entwickeln.
Ich habe hier 2 Klassen die sich gegenseitig kennen sollen, aber dabei ein rekursives include provozieren.
Mit #ifndef #define, #endif oder #pragma once krieg ich nur Fehlermeldungen wie "unerwartetes Dateiende"
Hier die beiden Header:
Memorie.h:
Karte.h:
bin eigentlich eingefleischter C# nutzer, aber muss diesesmal etwas in C++ entwickeln.
Ich habe hier 2 Klassen die sich gegenseitig kennen sollen, aber dabei ein rekursives include provozieren.
Mit #ifndef #define, #endif oder #pragma once krieg ich nur Fehlermeldungen wie "unerwartetes Dateiende"
Hier die beiden Header:
Memorie.h:
Code:
#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);
};
}
Code:
#include "Memorie.h";
namespace MemorieC {
public ref class Karte : public System::Windows::Forms::PictureBox
{
//Attribute
public:
static int width = 50; //Breite einer Karte | static heißt: kann nicht zur Laufzeit geändert werden (Der Compiler akzeptiert auch keine "width = x"angabe)
static int height = 50; //Höhe einer Karte
int index; // der Index der Karte, gibt an um welche Karte es sich handelt und welches Bild sie hat
int x; //gibt an in welcher horizontalen Reihe auf dem Spielfeld sich die Karte befindet
int y; //gibt an in welcher vertikalen Reihe auf dem Spielfeld sich die karte befindet
static System::String^ upperImage = "back.png"; // der Name des Bildes, welches die Rückseite jeder Karte zeigt
System::String^ downImage; // der Name des Bildes, welches die Vorderseite zeigt (abhängig vom Index)
public:
Karte(int index, int x, int y, Memorie^ memorie);
};
}