【发布时间】:2020-05-23 08:24:14
【问题描述】:
我有一个非 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 都是非常量的,它们中的一个怎么会出错而另一个没有呢?
【问题讨论】:
-
ctxt 和 ip 都是非 const 不,
ip在您的代码中声明为const。 -
请包含
get_coordinates_inventory()的定义
标签: c++