相关疑难解决方法(0)

在if语句中声明类变量

c ++接受:

if(int a=1)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

出于学习目的,我编写了一个简单的锁机制类:

class SimpleLock
{
public:
    class Token
    {
    public:
        friend class SimpleLock;
        Token(SimpleLock & lock) : lock(lock), locked(!lock.locked.exchange(true)) { }
        ~Token() { if(locked) lock.locked.store(false); }
        operator bool() const { return locked; }

    private:
        SimpleLock & lock;
        const bool locked;
    };

    SimpleLock() : locked(false) { }

private:
    std::atomic_bool locked;
};
Run Code Online (Sandbox Code Playgroud)

允许我这样做:

SimpleLock::Token t(lock);

if(t) //Token has an operator bool() overload
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

以下为什么不编译?

if(SimpleLock::Token t(lock))
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

在't'之前预期的初级表达

在线代码链接:http: …

c++ variables if-statement class

3
推荐指数
1
解决办法
145
查看次数

标签 统计

c++ ×1

class ×1

if-statement ×1

variables ×1