boost mutable_queue не компилируется

Мне удалось преодолеть (как представляется,) большинство начальных проблем, но из-за того, что некоторые из моих ответов были получены от вопросов других людей (без ответа), я не уверен, что я иду в правильном направлении. Я работаю с бустом изменяемая очередь и у меня возникли некоторые проблемы при компиляции.

Мой код в таком виде:

typedef struct _MyComparator
{
bool operator() (const PriorityStruct* arg1, const PriorityStruct* arg2) const
{
return arg1->key < arg2->key;
}
} MyComparator;

class PriorityQueue
{
typedef PriorityStruct* entry;
typedef boost::typed_identity_property_map<entry> prop_map;
typedef boost::mutable_queue<entry, std::vector<entry>, MyComparator, prop_map> priority_queue_notAmb;
priority_queue_notAmb* pq;
boost::mutex mut;
public:
PriorityQueue(void);
}

PriorityQueue::PriorityQueue()
{
pq = new priority_queue_notAmb(sizeof(entry)*2, MyComparator(), prop_map());
PriorityStruct* ps = new PriorityStruct;
pq->push(ps);
}

Когда я удаляю последнюю строку, pq-> push (ps), код компилируется и запускается при создании нового типа PriorityQueue. На самом деле, я получаю ошибки, которые мешают его компиляции.

И мои ошибки:

1>------ Build started: Project: PriorityQueue, Configuration: Debug x64 ------
1>  PriorityQueue.cpp
1>C:\boost\boost\pending\mutable_queue.hpp(94): error C2679: binary '[' : no operator found which takes a right-hand operand of type 'PriorityQueue::entry ' (or there is no acceptable conversion)
1>          C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vector(1119): could be 'const unsigned __int64 &std::vector<_Ty>::operator [](unsigned __int64) const'
1>          with
1>          [
1>              _Ty=size_t
1>          ]
1>          C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vector(1135): or       'unsigned __int64 &std::vector<_Ty>::operator [](unsigned __int64)'
1>          with
1>          [
1>              _Ty=size_t
1>          ]
1>          while trying to match the argument list '(std::vector<_Ty>, PriorityQueue::entry )'
1>          with
1>          [
1>              _Ty=size_t
1>          ]
1>          C:\boost\boost\pending\mutable_queue.hpp(91) : while compiling class template member function 'void boost::mutable_queue<IndexedType,RandomAccessContainer,Comp,ID>::push(const IndexedType &)'
1>          with
1>          [
1>              IndexedType=PriorityQueue::entry,
1>              RandomAccessContainer=std::vector<PriorityQueue::entry>,
1>              Comp=MyComparator,
1>              ID=PriorityQueue::prop_map
1>          ]
1>          PriorityQueue.cpp(7) : see reference to function template instantiation 'void boost::mutable_queue<IndexedType,RandomAccessContainer,Comp,ID>::push(const IndexedType &)' being compiled
1>          with
1>          [
1>              IndexedType=PriorityQueue::entry,
1>              RandomAccessContainer=std::vector<PriorityQueue::entry>,
1>              Comp=MyComparator,
1>              ID=PriorityQueue::prop_map
1>          ]
1>          PriorityQueue.cpp(5) : see reference to class template instantiation 'boost::mutable_queue<IndexedType,RandomAccessContainer,Comp,ID>' being compiled
1>          with
1>          [
1>              IndexedType=PriorityQueue::entry,
1>              RandomAccessContainer=std::vector<PriorityQueue::entry>,
1>              Comp=MyComparator,
1>              ID=PriorityQueue::prop_map
1>          ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Любая помощь будет принята с благодарностью, так как я не смог найти много информации об этом относительно того, как она используется.

Изменить: В качестве дополнительного теста я добавил

cout << (pq->empty() ? "YES" : "NO") << endl;

чтобы увидеть, случилось ли что-нибудь странное. Он печатает «ДА» каждый раз. Я заменил pq-> push на это, но сохраню это как обновленную заметку, если я не получу один или два комментария с просьбой сделать иначе для удобства чтения.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]