非const字段在函数中很好,但在另一个函数中被视为const

显示名称

我有一个非常量字段ctxt。我有一个这样的功能:

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。但是,我有一个类似的功能:

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字段ctxt

...

函数get_coordinates_inventory不是const

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

inventory_entry *inventory_selector::find_entry_by_coordinate( point coordinate ) const
                                                                                  ^^^^^

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

  • thisconst inventory_selector *
  • 所以this->ctxtconst input_context &
  • 因此this->ctxt.get_coordinates_inventory()不允许调用,因为该方法未声明为const。

无论是inventory_selector::find_entry_by_coordinate应非const,或input_context::get_coordinates_inventory应进行常量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过引用const函数来调用另一个类的非const函数

Angular 6. 访问在另一个函数中设置的“const”

如何从另一个文件中的反应 axios 函数返回 const?

如何将const参数从成员函数传递到另一个成员函数?

在函数中添加另一个搜索字段

C++ 在非 const 指针函数中返回一个 const 指针

view.findViewById() 在一个函数中返回 null 但在另一个函数中工作正常

如何在另一个函数中但在另一个Shell中调用一个函数

如果一个函数是在另一个函数中执行的,则立即将其视为回调函数吗?

函数在同一个文件中定义但在另一个文件中未定义

在构造函数中初始化const字段,但首先检查一个参数

如何将参数从一个函数传递到另一个函数,但在php中的同一个类中

角导入在一个模块中效果很好,但在另一个模块中不起作用

在另一个函数中传递的函数参数

在另一个函数中定义的访问函数

在另一个函数中调用被“隐藏”的函数

从另一个函数中调用类函数

在Swift中返回另一个函数的函数

在另一个函数中访问函数结果

导出另一个函数中的函数

在另一个函数中调用匿名函数

在另一个函数中声明的跟踪函数

函数在另一个函数中的迭代次数

是否可以在目标c中引用另一个文件的const中的const

有没有办法从不同类中的另一个const静态字段初始化const静态字段?

从一个函数中调用另一个函数内部的函数

Python从另一个函数调用一个函数中的函数

如何在另一个const React.js中映射映射的const

无法访问在另一个函数中更改的结构字段