g ++错误消息“使用'this->相等'而不是?”

时间:2013-05-06 09:18:34

标签: c++ templates g++

我正在尝试使用stlplus ntree类并使用它编写程序,我在Windows环境中编译它没有问题。我试图将它移植到Ubuntu中,但是有错误。

stlplus ntree类使用模板。这是我的代码的一个例子

ntree<rule_node_struct> t;
ntree<rule_node_struct>::iterator cur_it;
if (cur_it == t.root())
{
// do something
}

当我使用g ++编译时,我收到以下错误消息

  

实例化'bool stlplus :: ntree_iterator :: operator ==(const this_iterator&amp;)const [with T = rule_node_struct; TRef = rule_node_struct&amp ;; TPtr = rule_node_struct *; stlplus :: ntree_iterator :: this_iterator = stlplus :: ntree_iterator]':
      /usr/lib/stlplus3-03-08/containers/ntree.tpp:133:19:错误:'equal'未在此范围内声明,并且在实例化时,参数依赖查找未找到任何声明[ - fpermissive]
      /usr/lib/stlplus3-03-08/containers/ntree.tpp:133:19:注意:不合格的查找找不到依赖库'stlplus :: safe_iterator,stlplus :: ntree_node&gt;'中的声明       /usr/lib/stlplus3-03-08/containers/ntree.tpp:133:19:注意:使用'this-&gt; equal'而不是

为什么在Visual Studio不支持时,g ++会出现此错误?

1 个答案:

答案 0 :(得分:3)

这似乎是ntree类中的一个错误,因为G ++对符号进行了正确的两阶段查找,而VC似乎接受了破坏的代码。请注意,早期版本的G ++也接受了这种代码(AFAIK),因此它只在存储库中的最新版本中得到修复。虽然该版本是从2010年开始的。在我看来,它从未进入任何版本,因此请使用HEAD版本或要求他们进行发布。