boost :: priority_queue中的警告

时间:2017-12-09 04:18:26

标签: c++ visual-c++ boost warnings priority-queue

当我尝试构建" priority_queue_example.cpp"它得到这些警告(以及错误)指向" priority_queue_example.h"在我的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

我的priority_queue被声明为,

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

我不确定这意味着什么。我能解决这个问题吗?

这是我定义的比较类,

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

1 个答案:

答案 0 :(得分:1)

使用/ W4

Boost没有警告。这意味着即使您的代码是核心,也可能存在虚假警告。

您可以按照本文中的说明禁用特定警告:https://docs.microsoft.com/en-us/visualstudio/ide/how-to-suppress-compiler-warnings

  
      
  1. 在“解决方案资源管理器”中,选择要在其中禁止显示警告的项目或源文件。

  2.   
  3. 在菜单栏上,选择“视图”,“属性页”。

  4.   
  5. 选择“配置属性”类别,选择“C / C ++”类别,然后选择“高级”页面。

  6.   
  7. 执行以下步骤之一:

         
        
    • 在“禁用特定警告”框中,指定要抑制的警告的错误代码,以分号分隔。

    •   
    • 在“禁用特定警告”框中,选择“编辑”以显示更多选项。

    •   
  8.   
  9. 选择确定按钮,然后重建解决方案。

  10.