我喜欢在 C++ 中使用哨兵类,但我似乎有一种精神困扰,导致反复编写如下错误:
{
MySentryClass(arg);
// ... other code
}
不用说,这会失败,因为哨兵在创建后立即死亡,而不是按预期在作用域结束时死亡。有没有某种方法可以防止 MySentryClass 被实例化为临时对象,从而使上述代码要么无法编译,要么至少在运行时中止并显示错误消息?
我想不出一种自动方法来检测您是否犯了这个错误。您始终可以创建一个扩展为正确内容的宏,并使用它来声明哨兵,而不是如果您继续错误地使用它。
#define MY_SENTRY_CLASS(_X) MySentryClass _sentry(_X)
然后使用
MY_SENTRY_CLASS(arg);
或者在显示器上贴一张便利贴来提醒您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)