K''*_*K'' 1 c++ pointers constants
我是Node类的构造函数:
Node::Node(int item, Node const * next)
{
this->item = item;
this->next = next;
}
Run Code Online (Sandbox Code Playgroud)
当我编译它时会出现编译错误:从'const Node*'到'Node*'的无效转换
有没有办法传递一个指向常量数据的指针?
你正确地做了,但编译器是正确的抱怨:你将"指向const的指针"分配给Node一个类型为"指向非const的指针"的变量Node.如果你以后修改this->next,你违反了"我不会修改指向的变量"的合同next.
简单的解决方法就是声明next为非const数据的指针.如果变量this->next在Node对象的生命周期中永远不会被修改,那么您也可以将类成员声明为指向const对象的指针:
class Node
{
...
const Node *next;
}:
Run Code Online (Sandbox Code Playgroud)
还要注意"指向const数据的指针"和" const指向数据的指针" 之间的区别.对于单级指针,有四种类型的指针const:
Node *ptr; // Non-constant pointer to non-constant data
Node *const ptr; // Constant pointer to non-constant data
const Node *ptr; // Non-constant pointer to constant data
Node const *ptr; // Same as above
const Node *const ptr; // Constant pointer to constant data
Node const *const ptr; // Same as above
Run Code Online (Sandbox Code Playgroud)
请注意,与上一级const Node相同Node const,但const关于指针声明(" *")的位置非常重要.