class Adaptee
{
public:
// Interface.
void operator()(int a, int b, int c) { cout <<a; }
};
class Target
{
public:
// Interface.
virtual void operator()(int a) = 0;
};
class Adapter : public Target
{
// data.
Adaptee m_adaptee;
public:
Adapter(Adaptee &adaptee) : m_adaptee(adaptee) {}
public:
// Interface.
virtual void operator()(int a) override { m_adaptee(a, 0, 0); }
};
int main(int argc, char *argv[])
{
auto arr = {1, 2, 3, 4, };
for_each(arr.begin(), arr.end(), Adapter(Adaptee())); // 可以和标准算法工作在一起了.
return 0;
}