Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将arg作为';常量参数*&';_C++_Visual Studio 2008_Visual C++_Mfc - Fatal编程技术网

C++ 将arg作为';常量参数*&';

C++ 将arg作为';常量参数*&';,c++,visual-studio-2008,visual-c++,mfc,C++,Visual Studio 2008,Visual C++,Mfc,在恢复旧代码时,我面临一个问题 这是另一个-- 下面是函数的定义:- int shen_get_entity_from_list(const ENTITY_LIST& list, const ENTITY*& e); 这是定义变量的方法 ENTITY *t_ent = NULL, *p_e = NULL, *s_e = NULL, *t_e = NULL; 现在当我调用这个函数时 s_pos = shen_get_entity_from_list(sortedACISfeat

在恢复旧代码时,我面临一个问题

这是另一个--

下面是函数的定义:-

int shen_get_entity_from_list(const ENTITY_LIST& list, const ENTITY*& e);
这是定义变量的方法

ENTITY *t_ent = NULL, *p_e = NULL, *s_e = NULL, *t_e = NULL;
现在当我调用这个函数时

s_pos = shen_get_entity_from_list(sortedACISfeatureList, s_e);
它给了我以下的错误

错误C2664:
'shen\u get\u entity\u from\u list'
:无法将参数2从
'entity*'
转换为
'const entity*&'

尝试移动常量:

int shen_get_entity_from_list(const ENTITY_LIST& list, ENTITY* const& e);

这为您提供了对正在传递的类型的常量引用,而不是对指向常量实体的指针的非常量引用。

s_e变量需要声明为:

const ENTITY* s_e = NULL;

以匹配函数的声明。这意味着您不会使用s_e指针来修改它所指向的实体,因此在调用函数之后。

引用不是已经是常量类型了吗?在创造时需要价值吗

不允许空指针引用


由于所有这些原因,我觉得这个问题无法解决

只是出于兴趣:是否有理由将常量引用传递给指针??我不明白it@Niklas:它不是对指针的常量引用,而是对指向常量对象的指针的引用。在函数可能修改指针而不是指向的对象的情况下,这是简单的常量正确性(也就是说,这是一件好事)。@ildjarn:感谢您的精彩解释:)这些类型声明总是让我明白.Hm,但为什么它首先不能转换参数?@NiklasB。因为如果
shen\u get\u entity\u from\u list
e
更改为指向常量实体对象,那么在它返回实体*后(
s\u e
)将是指向常量对象的非常量指针,违反了常量规则。@je4d:谢谢解释!