如何将常量指针传递给类中的方法

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*'的无效转换

有没有办法传递一个指向常量数据的指针?

Ada*_*eld 8

你正确地做了,但编译器是正确的抱怨:你将"指向const的指针"分配给Node一个类型为"指向非const的指针"的变量Node.如果你以后修改this->next,你违反了"我不会修改指向的变量"的合同next.

简单的解决方法就是声明next为非const数据的指针.如果变量this->nextNode对象的生命周期中永远不会被修改,那么您也可以将类成员声明为指向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关于指针声明(" *")的位置非常重要.