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.