Warnings in boost::priority_queue

丶灬走出姿态 提交于 2020-01-15 12:23:29

问题


When I try to build "priority_queue_example.cpp" it get these warnings(and so errors) pointing to "priority_queue_example.h" on the line where my priority_queue is declared. The warnings are,

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

My priority_queue is declared as,

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

I'm not sure what this means. Can I fix this?

This is my comparison class defined,

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

回答1:


Boost is not warning-free with /W4. That means that there could be spurious warnings, even if your code is corect.

You can disable specific warnings as specified in this article: https://docs.microsoft.com/en-us/visualstudio/ide/how-to-suppress-compiler-warnings

  1. In Solution Explorer, choose the project or source file in which you want to suppress warnings.

  2. On the menu bar, choose View, Property Pages.

  3. Choose the Configuration Properties category, choose the C/C++ category, and then choose the Advanced page.

  4. Perform one of the following steps:

    • In the Disable Specific Warnings box, specify the error codes of the warnings that you want to suppress, separated by a semicolon.

    • In the Disable Specific Warnings box, choose Edit to display more options.

  5. Choose the OK button, and then rebuild the solution.



来源:https://stackoverflow.com/questions/47725269/warnings-in-boostpriority-queue

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!