相关疑难解决方法(0)

禁止创建临时对象

在多线程应用程序中调试崩溃时,我终于在此语句中找到了问题:

CSingleLock(&m_criticalSection, TRUE);
Run Code Online (Sandbox Code Playgroud)

请注意,它正在创建一个CSingleLock类的未命名对象,因此在此语句之后,临界区对象会立即解锁.这显然不是编码员想要的.此错误是由简单的输入错误引起的.我的问题是,有些我可以防止在编译时自己创建类的临时对象,即上面的代码类型应该生成编译器错误.一般来说,我认为每当一个类尝试进行某种资源获取时,就不应该允许该类的临时对象.有没有办法强制执行呢?

c++ mfc temporary

26
推荐指数
2
解决办法
2419
查看次数

如何避免C++匿名对象

我有一个ScopedLock类可以帮助在超出范围时自动释放锁定.但问题是:有时团队成员会编写无效的锁码,例如

{
    ScopedLock(mutex);   // anonymous
    xxx;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是错误的,因为ScopedLock对象是立即构造和销毁的,因此无法锁定预期的区域(xxx).我希望编译器在尝试编译此类代码时出错.可以这样做吗?

我搜索了g++警告选项,但找不到合适的警告选项.

c++ g++

14
推荐指数
3
解决办法
1489
查看次数

标签 统计

c++ ×2

g++ ×1

mfc ×1

temporary ×1