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 ;)
 
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.
 
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
 
Back
Top