错误 C2760 语法错误:意外标记“)”。预期的 ';'如何解决这个问题

问题描述 投票:0回答:1
#pragma once

#include "net_common.h"

//using namespace std;

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();
            }

            // Returns and maintains item at back of Queue
            const T& back()
            {
                scoped_lock lock(muxQueue);
                return deqQueue.back();
            }

            // Removes and returns item from front of Queue
            T pop_front()
            {
                scoped_lock lock(muxQueue);
                auto t =  move(deqQueue.front());
                deqQueue.pop_front();
                return t;
            }

            // Removes and returns item from back of Queue
            T pop_back()
            {
                scoped_lock lock(muxQueue);
                auto t =  move(deqQueue.back());
                deqQueue.pop_back();
                return t;
            }

            // Adds an item to back of Queue
            void push_back(const T& item)
            {
                scoped_lock lock(muxQueue);
                deqQueue.emplace_back( move(item));

                 unique_lock< mutex> ul(muxBlocking);
                cvBlocking.notify_one();
            }

            // Adds an item to front of Queue
            void push_front(const T& item)
            {
                scoped_lock lock(muxQueue);
                deqQueue.emplace_front( move(item));

                 unique_lock< mutex> ul(muxBlocking);
                cvBlocking.notify_one();
            }

            // Returns true if Queue has no items
            bool empty()
            {
                scoped_lock lock(muxQueue);
                return deqQueue.empty();
            }

            // Returns number of items in Queue
            size_t count()
            {
                scoped_lock lock(muxQueue);
                return deqQueue.size();
            }

            // Clears Queue
            void clear()
            {
                scoped_lock lock(muxQueue);
                deqQueue.clear();
            }

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

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

我尝试了我发现的所有方法,但没有任何幸福的结局,现在我只学习C++,所以我的经验很低。这个项目是MMO客户端/服务器。我通过 youtube 上的视频课程进行编码,所以...在视频中一切都工作得很好,但我遇到了这个问题,在修复它之前无法继续学习。请帮助我,或者如果您有任何问题和时间,如果您能给我一些时间,我将非常感激!

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

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

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

看起来当您删除

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

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