Следует ли использовать средства доступа для сложных типов данных?

Следует ли использовать средства доступа для сложных типов данных? Вот пример:

Скажи, что у меня есть Player класс и внутри него есть Sprite объект. Скажем Sprite объект имеет setPosition() метод доступа. Теперь предположим, что я хочу вызвать этот метод через проигрыватель, поэтому я создаю средство доступа к Sprite объект в Player,

class Player
{
public:
const Sprite& getSprite() const;

private:
Sprite sprite;
}

Теперь, скажем, я создаю объект «Player», как я могу вызвать setPosition на sprite? Я не могу просто сказать playerObject.getSprite().setPosition(); поскольку Sprite ссылаться на getSprite() метод возвращает const.

Должен ли я просто сделать sprite возразить общественности в этой ситуации, учитывая sprite объект имеет защиту от всех своих членов? Или это плохая практика, и мне нужно использовать средства доступа?

0

Решение

Нет хорошего ответа:

Имея 2D точку:

class Point {
public:
// Skipping constructors here.
int x() const { return m_x; }
int x&() { return m_x; }
int y() const { return m_y; }
int y&() { return m_y; }

private:
int m_x;
int m_y;
};

выглядит излишним по сравнению с

struct Point {
int x;
int y;
};

Первая позволяет вам изменить внутренние данные (скажем, на std :: vector), а вторая структура данных не допускает изменений. Даже первое громоздко, я предпочитаю это (но это вопрос вкуса)

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector