【问题标题】:g++ error message "use 'this->equal' instead?"g++ 错误消息“使用 'this->equal' 代替?”
【发布时间】:2013-04-30 00:32:27
【问题描述】:

我正在尝试使用 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&) const [with T = rule_node_struct; TRef = rule_node_struct&; TPtr = rule_node_struct*; stlplus::ntree_iterator::this_iterator = stlplus::ntree_iterator]’:
/usr/lib/stlplus3-03-08/containers/ntree.tpp:133:19:错误:未在此范围内声明“等于”,并且在实例化点通过依赖于参数的查找未找到任何声明[- fpermissive]
/usr/lib/stlplus3-03-08/containers/ntree.tpp:133:19:注意:非限定查找未找到依赖基“stlplus::safe_iterator, stlplus::ntree_node >”中的声明
/usr/lib/stlplus3-03-08/containers/ntree.tpp:133:19:注意:改用“this->equal”

为什么 g++ 有这个错误,而 Windows Visual Studio 没有?

【问题讨论】:

    标签: c++ templates g++


    【解决方案1】:

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

    【讨论】:

    • 感谢您的帮助。我已经获取了仓库中的固定代码
    猜你喜欢
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2013-10-05
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多