我有两个类。第一类做一些事情,然后调用第二类方法。第一类的每种方法都是这样做的。是否有可能使用某些宏自动化代码实现?C++将函数名称传递给宏并调用它
例子:
class A
{
void Do1()
{
Do task x
ClassB b;
b.Do1();
Do task y
}
void Do2()
{
Do task x
ClassB b;
b.Do2();
Do task y
}
}
是否有可能实现这种方式?这不起作用,但类似的东西。
#define VOID_FUNC(name) \
Do task x;\
ClassB b;\
b.##name##();\
Do task y;
class A
{
void Do1()
{
VOID_FUNC(__FUNCTION__);
}
void Do2()
{
VOID_FUNC(__FUNCTION__);
}
}
可能,但可爱的方法是使用模板,'的std :: bind',和'std :: function'。我肯定会赞扬一个答案,勾勒出这一点。 – Bathsheba
似乎没有一种简单的方法来创建你所要求的内容,而不那么简单的方法真正快速变得丑陋;如果你解释为什么要这样做,这可能会有所帮助,因为可能有更好的方法来实现你的目的?看起来好像你想围绕一个现有的类来编写一个包装,该类处理类使用的某种资源,其中任务x将获取资源,任务y将释放它。我想到的一个想法是,C++标准库通常允许实际上可以适应的自定义分配器,即使对于日志记录等事情也是如此。 –