>>123
C++でも必要ならマクロを使ってもいいんだぞ。

#include <iostream>
#define CreateHolder(name, interface, method)\
class Holder##name {\
int method_impl() { return 1; }\
public:\
int method() { return method_impl(); }\
}
int main() {
CreateHolder( A, InterfaceA, MethodA );
HolderA objectA;
CreateHolder( B, InterfaceB, MethodB );
HolderB objectB;
std::cout << objectA.MethodA() << " " << objectB.MethodB() << std::endl;
return 0;
}