По следам
http://www.rsdn.ru/forum/Message.aspx?mid=91931Автор: Yurets
Дата: 29.08.02
.
Вот пример реализации конструкции with на C++ (обратные слеши в макросах поскипаны).
#define WITH(cls, obj)
{
struct ___WithHelperClass : public cls
{
void do_with()
{
#define END_WITH(obj)
}
};
((___WithHelperClass&)obj).do_with();
}
Использование:
struct SS
{
int a;
double b;
char c;
void f() {}
void p(int i)
{
printf("printing... i=%d, a=%d, b=%lf, c=%c", i, a, b, c);
}
};
SS ss;
WITH(SS, ss)
a = 1;
b = 2;
c = 3;
f();
p(1);
END_WITH(ss)
Это только идея, реализацию можно попробовать усовершенствовать.