【发布时间】:2013-08-14 23:23:19
【问题描述】:
这甚至可能吗?我想编写一个宏,以便更轻松地使用我的某些类功能。
假设我的类中有 2 个成员函数 setup() 和 cleanup(),其中 setup() 为需要在自己的范围内执行的某些操作设置参数,而 cleanup() 执行清理(类似构造函数和析构函数的概念)。
目前,我这样做:
myClassInstance.setup(); //call the setup function
{ //start scope
//CREATE LOCAL VARS
//DO STUFF IN THIS SCOPE
myClassInstance.cleanup(); //cleanup
} //end scope, destroy locals
但想做这样的事情:
NEWSCOPE(myClassInstance) //calls setup()
{
//CREATE LOCAL VARS
//DO STUFF IN THIS SCOPE
} // calls cleanup() and destroys locals
我的想法是写一个宏类,可以在使用宏时实例化,并且 setup() 和 cleanup() 可以在构造函数/析构函数中实现......或类似的东西......
这是考虑这个问题的正确方法,还是有另一种方法可以编写一个基本上可以环绕用户编写的代码的宏?
* 编辑 * 我修复了命名约定,因为函数名称会引起混淆。
【问题讨论】:
-
这种事情在 OpenSceneGraph 中经常使用 aaronman 的回答来完成
-
但我不想显式调用 startScope() 和 endScope() 函数并消除用户忘记 { } 的可能性。
-
如果所有代码都旨在防止懒惰的程序员错误地使用库的可能性,那么这个星球就会陷入停顿。
-
@radensb 看看我更新的答案,如果没有点击,我想我会删除我的答案
-
我猜你正在使代码难以阅读和维护。从长远来看,这将伤害您或未来的员工