{ MySentryClass(arg); // ... other code }
不用说,这是因为哨兵在创作之后立即死亡,而不是按照意图在范围结束时死亡.有没有办法阻止MySentryClass被实例化为临时的,所以上述代码无法编译,或者至少在运行时会中断错误消息?
#define MY_SENTRY_CLASS(_X) MySentryClass _sentry(_X)
然后使用
MY_SENTRY_CLASS(arg);
或者将其放在显示器上以提醒您.