Witam,
Mam 3 klasy:
Space.h
class Space
{
protected:
int boardSize;
struct Position {
size_t x, y;
};
Position coordinate;
std::vector<Position>collectionXY;
public:
Space();
~Space();
};
Stream.h
class Stream : private Space
{
public:
Stream();
~Stream();
void ReadSampleXY(std::string &d);
void ReadGroupXY(std::string &d);
void ReadInitialData(std::string d);
};
Tree.h
class Tree : private Space
{
private:
Node root;
Node* chosenNode;
std::vector<Node*>previousNodes;
public:
Tree(int size, std::vector<Position>&collection);
~Tree();
//void checkMovePossibilities(std::vector<Position>&collection);
};
Cała rzecz polega na tym, że do funkcji klasy Stream
przekazuję ciąg znaków pobranych z bufora. Następnie ciąg ten analizuję, a wyniki z tych 3 funkcji zawsze w postaci współrzędnych zapisuję do wektora collectionXY
. Teraz wektor ten chcę przekazać przez referencję zarówno do konstruktora klasy Tree
, jak i do funkcji checkMovePossibilities
klasy Tree
i za bardzo nie wiem jak to zrobić aby nie naruszyć enkapsulacji danych. Bo mógłbym oczywiście w klasie Space
zmienną std::vector<Position>collectionXY
zrobić publiczną, ale to nie jest chyba dobre rozwiązanie. To samo tyczy się zmiennej boardSize
której wartość z obiektu klasy Stream
będę musiał przekazać do konstruktora klasy Tree
.
Jedyne co chodzi mi po głowie to publiczne metody Get
, choć dla wektora taka metoda pewnie musiałaby wyglądać tak jak dla tablicy czyli wkaźnik na 1 element + wielkość wektora, albo zaprzyjaźnić konstruktor Tree
i metodęcheckMovePossibilities
z klasą Stream
.