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