Projekt klas dla gry Szachy

0

Witam.
Dla rozrywki chcę trochę podłubać w C++ i natrafiłem na małe problemy podczas kodzenia gry "szachy".

// ch.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <vector>

class TFigure abstract
{
public:
	char X, Y;
	bool Owner;
	virtual void Move(char, char) = 0;
	TFigure(const bool Owner, char X, char Y)
	{
		this->Owner = Owner;
		this->X = X;
		this->Y = Y;
	}
};

class TPawn: public TFigure
{
public:
	virtual void Move(char X, char Y);
	TPawn(const bool Owner, char X, char Y): TFigure(Owner, X, Y) {}
};


void TPawn::Move(char X, char Y)
{

}


class TBoard
{
public:
	char SizeX, SizeY;
	std::vector<TFigure> Fig;
};


int _tmain(int argc, _TCHAR* argv[])
{
	TBoard *b = new TBoard();

	for(int i=0;i<8;++i)
	{
		b->Fig.push_back(new TPawn(true, i, i));
	}

	return 0;
}

Pytania:

  1. Dlaczego nie mogę do typu TFigure utworzyć obiektu TPawn ? W Delphi nie miałem tego problemu....(tudzież TStrings -> TStringList)
  2. Jak zoorganizować promocję figur ? Należy zniszczyć obiekt danego typu i utworzyć nowy ? Czy można jakoś to sprytniej zaprogramować ?
  3. Jak z poziomu klasy TFigure uzyskać dostęp do SizeX i SizeY(rozmiar planszy) klasy TBoard ? Przekazanie wskaźnika do TFigure ?
  4. Ogólne uwagi może jakieś...
0

Ogólna uwaga:

TBoard *b = new TBoard();

Nigdy nie zwalniasz pamięci.

std::vector<TFigure> Fig;
//...
b->Fig.push_back(new TPawn(true, i, i));

Do wektora obiektów pchasz wskaźniki, nie ma żadnego kodu który by zwalniał pamięć

class TFigure abstract

co to jest to "abstract"? ;) Bo C++ to to nie jest. ;)

http://www.cplusplus.com/doc/tutorial/inheritance/
http://www.cplusplus.com/doc/tutorial/polymorphism/

0

etam, o zwalnianiu to wiem. Jednakże wątpliwości moje zostają takie same...
Co do Abstracta to faktycznie - wywalę. W C# jest, napisałem to w Visualu i też działało wiec nie zwrocilem uwagę na standard.

1 użytkowników online, w tym zalogowanych: 0, gości: 1