错误 C2760 语法错误:意外标记 ')'。预期的 ';'当您尝试使用互斥体库时[关闭]

问题描述 投票:0回答:1
#pragma once  
## Here we include library where keeps the scoped_lock ##

#include <mutex> 
namespace olc  
{  
namespace net  
{  
  template<typename T>  
    class tsqueue  
{  
public:  
tsqueue() = default;  
tsqueue(const tsqueue<T>&) = delete;  
virtual ~tsqueue() { clear();   
}  
public:  
// Returns and maintains item at front of Queue  
const T& front()  
{  

SCOPED_LOCK 中的主要问题

**scoped_lock lock(muxQueue);**
    return deqQueue.front();  
}  

void wait()  
{  
while (empty())  
     unique_lock<mutex> ul(muxBlocking);  
    cvBlocking.wait(ul);  
  }  
}  

    protected:  
        mutex muxQueue;  
        deque<T> deqQueue;  
        condition_variable cvBlocking;  
        mutex muxBlocking;  
    };  
  }  
} 

所以在我写完所有 func 之后,这个小代码在我的项目中使用

并编译,它们必须用于检查队列,检查id和ip ##

P.S这是我的第一篇文章,后来我尝试更好地学习规则,但现在我真的需要你的帮助

c++ debugging visual-c++ mutex scoped-lock
1个回答
1
投票

一旦我重新引入您删除并初始化模板的

using namespace std;
,代码就可以正常编译: https://godbolt.org/z/j4Y688jxq

看起来当您删除

using namespace std;
时,您忘记在来自
std::
的所有内容之前添加
namespace std
。继续这样做,你就会很顺利。

编辑:一个重要的注意事项 - 养成一般不使用

using namespace std;
的习惯,尤其是在头文件中。它通常被认为是不好的做法,并且可能会产生不同类型的错误,其中一些非常难以重现或追踪。

© www.soinside.com 2019 - 2024. All rights reserved.