#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 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;
};
}
}
并编译,它们必须用于检查队列,检查id和ip ##
一旦我重新引入您删除并初始化模板的
using namespace std;
,代码就可以正常编译:
https://godbolt.org/z/j4Y688jxq
看起来当您删除
using namespace std;
时,您忘记在来自 std::
的所有内容之前添加 namespace std
。继续这样做,你就会很顺利。
编辑:一个重要的注意事项 - 养成一般不使用
using namespace std;
的习惯,尤其是在头文件中。它通常被认为是不好的做法,并且可能会产生不同类型的错误,其中一些非常难以重现或追踪。