Vector mit Struct zurückgeben

darthcookie

Member
Joined
Aug 2, 2009
Messages
104
Hallo Leute, ich habe mal wieder ein ziemlich seltsames Problem: Ich habe mir eine Struct definiert und möchte in einer Methode in einer Klasse einen Vector mit solchen Structs zurückgeben. Aber ich erhalte in Eclipse immer 3 Fehler:
1. expected `;' before '}' token (am Ende der Klassendefinition) (Komisch das das da auftritt. Wenn ich den Rückgabetyp der Funktion in int oder sowas ändere kommt der Fehler nicht)
2. expected `;' before '<' token (in der Methodendefinition)
3. ISO C++ forbids declaration of `vector' with no type (auch in der Methodendefinition)

Die Methodendefinition sieht so aus:
Code:
vector<move> chkPossMov(bool white)
PS: Sonderpunkte für den, der errät was ich programmiere ;)
 

darthcookie

Member
Joined
Aug 2, 2009
Messages
104
OK Vergesst das mit dem Raten ;)
Code:
<i>
</i>#include <iostream>

using namespace std;

struct move
{
		int from;
		int to;
		int chessman;

		/*0 = nix
		 *? = schlägt
		 *? = schach
		 *>9000 = matt ;)
		 */
		int rating;
};

class Board
{

	public:
		Board()
		{

		}

	private:
		/*  A B C D E F G H
		 *  _______________
		 *8|              63
		 *7|
		 *6|
		 *5|
		 *4|
		 *3|
		 *2|8
		 *1|0 1 2 3 4 5 6 7
		 *
		 * 0 = leer
		 * WEIß
		 * 1 = Bauer
		 * 2 = Turm
		 * 3 = Springer
		 * 4 = Läufer
		 * 5 = Dame
		 * 6 = König
		 * SCHWARZ
		 * 7 = Bauer
		 * 8 = Turm
		 * 9 = Springer
		 * 10 = Läufer
		 * 11 = Dame
		 * 12 = König*/
		int map[64];

		vector<move> chkPossMov(bool white)
		{
			vector<move> mvs;

			if (white)
			{

				for (int i = 0; i < 64; i++)
				{
					switch (map[i])
					{
					case 1:
						if (map[i + 8] == 0)
						{
							mv.chessman = map[i];
							mv.from = i;
							mv.to = i + 8;
							mv.rating = 0;
                                                        //In vector einfügen

						}
						if (map[i + 7] > 6)
						{
							mv.chessman = map[i];
							mv.from = i;
							mv.to = i + 7;
							mv.rating = 0;
                                                        //In vector einfügen
						}
						if (map[i + 9] > 6)
						{
							mv.chessman = map[i];
							mv.from = i;
							mv.to = i + 9;
							mv.rating = 0;
                                                        //In vector einfügen
						}
						break;
					case 2:

						break;
					case 3:

						break;
					case 4:

						break;
					case 5:

						break;
					case 6:

						break;
					default:
						break;
					}
				}
			}
			else
			{
				for (int i = 0; i < 64; i++)
				{
					switch (map[i])
					{
					case 7:

						break;
					case 8:

						break;
					case 9:

						break;
					case 10:

						break;
					case 11:

						break;
					case 12:

						break;
					default:
						break;
					}
				}
			}
			return mvs;			
		}

};
Ist bisher nur ein Test, deswegen die vielen leeren cases, die werden noch befüllt.
 

foxblock

Asleep
Joined
Jun 17, 2009
Messages
1,563
Location
Germany
Ganz einfacher und blöder (da durch den build log nicht auffindbarer) Fehler.
Code:
#include <vector>
fehlt

Dann compiliert der code, bis auf einen Fehler wg. der unbekannten Variable "mv" (soll wohl ein element des vectors sein), sauber.

foxblock out
 
Top