Klassen Function mit zwei dim. Array als Parameter?!?
-
Wie lässt sich eine klassen Funftion mit eimem zwei dim. Array deklarier?
ein Dimensional funz:
class Pathfinding { public: void sortieren(int *,int*,int*,int,int,int&); }pathfinding[1000]; void Pathfinding ::sortieren(int Feld[],int Feldx[],int Feldy[],int max,int clear,int& newmax) {
-
Das hängt davon ab, wie du das zweidimensionale Array darstellst. Am besten verwendest du dazu eine kapselnde Klasse, wenn möglich was Fertiges wie Boost.MultiArray...
-
es handelt sich um "normales" Array also
z.b.:int Feld[10][10];So hätte ich es mir ungefähr vorgestellt.
Function in der Klasse:
void start_search(POINT &,POINT,int *[][]);Dekleration:
void Pathfinding :: start_search(POINT &player,POINT ziel,int ar[][h])Brauchen würde ich es um ein Array in meiner Klasser die Daten zu zuweise.
-
Nimm
int feld[10][10], wobei du eine Dimension weglassen kannst. Wenn du beide Dimensionen nicht festlegen willst, nimm eine bessere Lösung wieboost::multi_arrayoder ein verschachtelterstd::vector. Oder eine eigene Klasse, die ein 2D-Array dynamisch verwaltet und Zugriff kapselt (du kannst ein 2D-Array übrigens auf ein 1D-Array abbilden, ist vielleicht einfacher).
-
Du meinst so:
void Pathfinding :: start_search(POINT &player,POINT ziel,int ar[10][10])Wäre kein problem ich weiß nur nicht wie ich es in der Klasse dekleriere.
So würde es nicht simmen oder?:
void start_search(POINT &,POINT,int (*ar)[]);Ich werds einmal mit einer gekapselten Klasse probieren

-
Wie wärs mit gleicher Signatur für Deklaration und Definition?

Übrigens sollst du nicht die Funktion, sondern das Array kapseln. Wenn du immer mit der gleichen Grösse arbeitest, reicht ein
typedef int Spielfeld[10][10];Und sonst vielleicht sowas:
class Array2D { public: Array2D(unsigned int breite, unsigned int hoehe); int& At(unsigned int x, unsigned int y); private: std::vector<int> array; // 2D auf 1D abbilden };
-
Typdef funz perfekt!!!
danke für die ausführliche hilfe