Объединение похожих функций в одну в C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Объединение похожих функций в одну в C++

Сообщение Anonymous »

Предположим, у меня есть следующий класс задач с игрушками:

Код: Выделить всё

class A {
public:
// ...
void setID(B* b, unsigned int ID);
void setName(B* b, string name);
void setNumber(B* b, unsigned int num);
// ...
};
где

Код: Выделить всё

void A::setID(B* b, unsigned int ID) {
foo(b);
b->doSomethingWithID(ID);
bar(b);
}

void A::setName(B* b, string name) {
foo(b);
b->doSomethingWithName(name);
bar(b);
}

void A::setNumber(B* b, int num) {
foo(b);
b->doSomethingWithNum(num);
bar(b);
}
В моей реальной проблеме функции foo() и bar() довольно сложны, и у меня есть несколько таких процедур установки. Однако каждая из процедур установки вызывает foo(), функцию-член объекта B, и bar().
Есть ли возможность написать только одну общую функцию set(), которую я могу передать функции, которая будет выполняться на b, чтобы уменьшить объем скопированного кода?

Подробнее здесь: https://stackoverflow.com/questions/793 ... o-one-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»