2017-12-09 6 views
1

Wenn ich versuche, "priority_queue_example.cpp" zu erstellen, erhalten diese Warnungen (und so Fehler) auf "priority_queue_example.h" in der Zeile, wo meine priority_queue deklariert ist. Die Warnungen sind,Warnungen in boost :: priority_queue

1> priority_queue_example.cpp 
1>c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(102): error C2220: warning treated as error - no 'object' file generated 
1>c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(102): warning 
C4100: 'rhs' : unreferenced formal parameter 
1>   c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(102) : while compiling class template member function 'boost::heap::detail::size_holder<false,size_t>::size_holder(const boost::heap::detail::size_holder<false,size_t> &)' 
1>   c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(189) : see reference to function template instantiation 'boost::heap::detail::size_holder<false,size_t>::size_holder(const boost::heap::detail::size_holder<false,size_t> &)' being compiled 
1>   c:\Projects\lib\boost\boost\heap\detail\stable_heap.hpp(151) : see reference to class template instantiation 'boost::heap::detail::size_holder<false,size_t>' being compiled 
1>   c:\Projects\lib\boost\boost\heap\priority_queue.hpp(65) : see reference to class template instantiation 'boost::heap::detail::heap_base<T,myObjectPtrCompare,false,unsigned __int64,false>' being compiled 
1>   with 
1>   [ 
1>    T=myObject * 
1>   ] 
1>   c:\Projects\priority_queue_example.h(193) : see reference to class template instantiation 'boost::heap::priority_queue<myObject *,boost::heap::compare<myObjectPtrCompare>,boost::parameter::void_,boost::parameter::void_,boost::parameter::void_>' being compiledcompare<ObjectPtrCompare>,boost::parameter::void_,boost::parameter::void 

Mein priority_queue als erklärte

mutable boost::heap::priority_queue<myObject*, boost::heap::compare<myObjectPtrCompare> > hp; 

Ich bin nicht sicher, was das bedeutet. Kann ich das reparieren? definiert

Dies ist mein Vergleich Klasse,

struct myObjectPtrCompare 
{ 
    bool operator()(const myObject* lhs, const myObject* rhs) const 
    { 
     return (lhs->getProp() < rhs->getProp()); 
    } 
}; 

Antwort

1

Boost nicht Warnung frei mit/W4. Das bedeutet, dass es falsche Warnungen geben kann, auch wenn Ihr Code corect ist.

können Sie bestimmte Warnungen deaktivieren, wie in diesem Artikel angegeben: https://docs.microsoft.com/en-us/visualstudio/ide/how-to-suppress-compiler-warnings

  1. in dem Solution Explorer wählen, in dem Sie das Projekt oder die Quelldatei wollen Warnungen zu unterdrücken.

  2. Wählen Sie in der Menüleiste Ansicht, Eigenschaftenseiten.

  3. Wählen Sie die Kategorie Konfigurationseigenschaften, wählen Sie die Kategorie C/C++, und wählen Sie dann die Seite Erweitert.

  4. einen der folgenden Schritte aus:

    • Im Disable Spezifische Box Warnungen, die Fehlercodes der Warnungen an, die Sie unterdrücken wollen, durch ein Semikolon getrennt.

    • Wählen Sie im Feld Spezielle Warnungen deaktivieren die Option Bearbeiten, um weitere Optionen anzuzeigen.

  5. Wählen Sie die Schaltfläche OK, und erstellen Sie die Lösung neu.

Verwandte Themen