class A {
public:
// ...
void setID(B* b, unsigned int ID);
void setName(B* b, string name);
void setNumber(B* b, unsigned int num);
// ...
};
< /code>
где < /p>
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);
}
< /code>
В моей реальной проблеме функции Foo и Bar довольно сложны, и я получил несколько из этих подпрограмм. Тем не менее, каждая из подпрограмм Setter вызывает Foo, функцию члена B
-object и bar. Есть ли возможность написать только один набор общей функции , что я могу передать функцию, которая должна быть выполнена на b , чтобы уменьшить количество копируемого кода?
Допустим, у меня есть следующий класс проблемы с игрушками: < /p> [code]class A { public: // ... void setID(B* b, unsigned int ID); void setName(B* b, string name); void setNumber(B* b, unsigned int num); // ... }; < /code> где < /p> 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); } < /code> В моей реальной проблеме функции Foo и Bar довольно сложны, и я получил несколько из этих подпрограмм. Тем не менее, каждая из подпрограмм Setter вызывает Foo, функцию члена B [/code] -object и bar. Есть ли возможность написать только один набор общей функции , что я могу передать функцию, которая должна быть выполнена на b , чтобы уменьшить количество копируемого кода?