Hi:

I’m using a queue written I think as I remember by Antony Williams (sorry if this is incorrect but it was certainly someone in the uk).

The code is below, I’m getting 2 c2248 errors indicated by visual c++ 2010 at the last line of the class i.e the line with };

Does anyone know what’s causing this?

The errors are:

     1>d:\dropbox\mackie display reader\surface reader\surface reader\queue.hpp(18): error C2248: 'boost::mutex::mutex' : cannot access private member declared in class 'boost::mutex'

                 c:\program files\boost\boost\thread\win32\mutex.hpp(26) : see declaration of 'boost::mutex::mutex'

                 c:\program files\boost\boost\thread\win32\mutex.hpp(22) : see declaration of 'boost::mutex'

                 This diagnostic occurred in the compiler generated function 'concurrent_queue<Data>::concurrent_queue(concurrent_queue<Data> &)'

                 with

                 [

                     Data=PmEvent

                 ]

     1>d:\dropbox\mackie display reader\surface reader\surface reader\queue.hpp(18): error C2248: 'boost::condition_variable::condition_variable' : cannot access private member declared in class 'boost::condition_variable'

                 c:\program files\boost\boost\thread\win32\condition_variable.hpp(299) : see declaration of 'boost::condition_variable::condition_variable'

                 c:\program files\boost\boost\thread\win32\condition_variable.hpp(295) : see declaration of 'boost::condition_variable'

                 This diagnostic occurred in the compiler generated function 'concurrent_queue<Data>::concurrent_queue(concurrent_queue<Data> &)'

                 with

                 [

                     Data=PmEvent

                 ]

PmEvent is just a standard c structure:

typedef struct {

    PmMessage      message;

    PmTimestamp    timestamp;

} PmEvent;

PmTimestamp and PmMessage are defined as:

typedef int32_t PmMessage/PmTimeStamp;

any help appreciated.

Cheers

Sean.

--begin code—

#include <queue>

#include <boost/thread/mutex.hpp>

#include <boost/thread/condition_variable.hpp>

template <typename Data>

class concurrent_queue {

private:

       boost::mutex the_mutex;

       boost::condition_variable the_condition_variable;

       std::queue<Data> the_data;

public:

           void push(Data const& data)

    {

        boost::mutex::scoped_lock lock(the_mutex);

        the_queue.push(data);

        lock.unlock();

        the_condition_variable.notify_one();

    }

};

--end code--