首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >非const字段在函数中罚款,但在另一个函数中被确认为const

非const字段在函数中罚款,但在另一个函数中被确认为const
EN

Stack Overflow用户
提问于 2020-05-23 08:24:14
回答 1查看 64关注 0票数 2

我有一个非康斯特场。我有这样的职责:

代码语言:javascript
运行
复制
inventory_input inventory_selector::get_input()
{
    inventory_input res;

    const input_context ip;

    res.action = ctxt.handle_input();
    res.ch = ctxt.get_raw_input().get_first_input();

    std::tuple<point, bool> tuple = ctxt.get_coordinates_inventory( w_inv );//Fine
    std::tuple<point, bool> tuple = ip.get_coordinates_inventory( w_inv );//Error

    res.entry = find_entry_by_invlet( res.ch );

    if( res.entry != nullptr && !res.entry->is_selectable() ) {
        res.entry = nullptr;
    }

    return res;
}

错误是“对象具有与成员函数不兼容的类型限定符”,因为ip是const,但函数get_coordinates_inventory不是const。然而,我还有一个这样的功能:

代码语言:javascript
运行
复制
inventory_entry *inventory_selector::find_entry_by_coordinate( point coordinate ) const
{
    input_context ip;
    std::tuple<point, bool> tuple = ctxt.get_coordinates_inventory( w_inv );//surprising, this line is having error.
    std::tuple<point, bool> tuple = ip.get_coordinates_inventory( w_inv );//this line dosn't has error
}

错误消息是:对象具有与成员函数"input_context_inventory“对象类型不兼容的类型限定符是: const input_context。我不明白为什么会发生这种情况,ctxt和ip都是非const的,它们中的一个怎么会有错误而另一个却没有呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-23 09:02:33

I有一个非const字段ctxt

..。

函数get_coordinates_inventory不是const

这是你的问题。请注意此方法上的const限定符:

代码语言:javascript
运行
复制
inventory_entry *inventory_selector::find_entry_by_coordinate( point coordinate ) const
                                                                                  ^^^^^

这意味着可以在const inventory_selector上调用此方法。因此,在此函数中,隐式this指针指向const inventory_selector。因此,您不能在ctxt上调用非const方法--它也是const,因为它是在方法上下文中被认为是const的对象的成员:

  • this is const inventory_selector *.
  • So this->ctxt is const input_context &.
  • So调用this->ctxt.get_coordinates_inventory()不允许,因为该方法未声明为const.

inventory_selector::find_entry_by_coordinate应该是非const的,input_context::get_coordinates_inventory应该是const的.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61969331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档