Используя C++ я создал Класс, который имеет много функций метода set, а также различных функций, которые могут быть вызваны подряд во время времени выполнения. Таким образом, я заканчиваю с кодом, который похож:
A* a = new A();
a->setA();
a->setB();
a->setC();
...
a->doA();
a->doB();
Не, что это плохо, но мне не нравится вводить "a->" много раз.
Таким образом, я переписал свои определения классов для сходства с:
class A{
public:
A();
virtual ~A();
A* setA();
A* setB();
A* setC();
A* doA();
A* doB();
// other functions
private:
// vars
};
Таким образом я мог init мой класс как: (метод 1)
A* a = new A();
a->setA()->setB()->setC();
...
a->doA()->doB();
(который я предпочитаю, поскольку легче записать),
Для предоставления более точной реализации этого, Вы видите мой Класс C++ Sprite SDL, который я записал по http://ken-soft.com/?p=234
Все, кажется, работает просто великолепно. Однако я интересовался бы любой обратной связью к этому подходу. Я заметил Одну проблему. Если я init Мой класс как: (метод 2)
A a = A();
a.setA()->setB()->setC();
...
a.doA()->doB();
Затем у меня есть различные проблемы памяти, и иногда вещи не работают, как они должны (Вы видеть это путем изменения, как я init весь Sprite возражаю в main.cpp моей Демонстрации Sprite).
Это нормально? Или поведение должно быть тем же?
Редактирование методы set должно, прежде всего, сделать мою жизнь легче в инициализации. Моим основным вопросом является способ, которым метод 1 и метод 2 ведут себя отличающиеся для меня?
Править: Вот метод считывания в качестве примера и метод set:
Sprite* Sprite::setSpeed(int i) {
speed = i;
return this;
}
int Sprite::getSpeed() {
return speed;
}