Я должен скрыть или показать эту реализацию?


Анимация состоит из кадров. У меня есть следующий класс:

class Frame
{
private:
    sf::IntRect rect;
    unsigned int duration;

public:
    Frame(sf::IntRect rect, unsigned int duration);

    unsigned int getDuration();
    sf::IntRect& getRect();
};

В мульт класс Я имеют следующие функции:

void Animation::addFrame(sf::IntRect rect, unsigned int duration) // public
{
    frames.push_back(Frame(rect, duration)); // ps: private std::vector<Frame> frames;
}

оно должно быть на самом деле:

void Animation::addFrame(Frame frame) // public
{
    frames.push_back(frame);
}

таким образом, показывая, как анимация реализована под? Я и в этом сомневаюсь, если класс рамка не должна быть просто struct с rect и продолжительность. Спасибо большое заранее!



207
2
c++
задан 17 июля 2011 в 02:07 Источник Поделиться
Комментарии
3 ответа

Никогда не вру в коде. Если вы говорите: addFrame, я ожидаю, что проходящий кадр должен быть абсолютно нормально. Первая функция, вы должны предоставить как интерфейс этого класса является addFrame(рамка как const&). Затем, если вы твердо уверены, что имея (IntRect, uint с) перегрузка действительно полезна при написании реального кода клиента, добавьте эти перегрузки. Но (рамка как const&) должна идти в первую очередь (я имею в виду, когда вы думаете, является ли или нет).

Кстати, я не уверен, что за кадр, но вы должны рассмотреть вопрос о принятии его постоянные ссылки - это идиома.

2
ответ дан 19 июля 2011 в 07:07 Источник Поделиться

Я бы addFrame взять каркас и

Поддерживает интерфейс простой, и тогда, если ваши кадры становятся все более сложными, вы не будете иметь, чтобы сделать так много изменений.

1
ответ дан 19 июля 2011 в 10:07 Источник Поделиться

Это на самом деле дело вкуса. для моего предпочтения, я бы выбрал

void Animation::addFrame(sf::IntRect rect, unsigned int duration) // public
{
frames.push_back(Frame(rect, duration)); // ps: private std::vector<Frame> frames;
}

потому что он скрывает реализацию.

Написание класса-это хорошо(опять же, это мои предпочтения), когда у вас есть переменные-члены(которые должны храниться в тайне чаще всего).

0
ответ дан 18 июля 2011 в 12:07 Источник Поделиться