所以我有一系列的全球性职能,说:如何使用宏或元编程在C++中创建'passthru'函数?
foo_f1(int a, int b, char *c);
foo_f2(int a);
foo_f3(char *a);
我想打一个C围绕这些++包装,一样的东西:
MyFoo::f1(int a, int b, char* c);
MyFoo::f2(int a);
MyFoo::f3(char* a);
有大约40起类似这样的,他们中的35我只想通过全局函数,其他5我想做一些不同的事情。
理想MyFoo.cpp的实施将是这样的:
PASSTHRU(f1, (int a, int b, char *c));
PASSTHRU(f2, (int a));
MyFoo::f3(char *a)
{
//do my own thing here
}
,但我有麻烦找出一种优雅的方式,使上述PASSTHRU宏。
我真正需要的是下面有点像神话X getArgs():
MyFoo::f1(int a, int b, char *c)
{
X args = getArgs();
args++; //skip past implicit this..
::f1(args); //pass args to global function
}
但短期下探到组装,我不能找到一个很好的实现getArgs的()的。
大多数情况下,在当前版本的C++中这是不可能的。如果你的Google是“完美的转发”,你应该得到很多关于它为什么现在不能工作的点击,以及C++ 0x为帮助解决问题而添加的内容。 – 2010-05-24 19:46:41
使全局函数成为一个类的成员有什么作用,特别是当你试图跳过'this'呢? – GManNickG 2010-05-24 19:52:45