为什么我不能将地址作为参考传递?

Eri*_*ric 4 c++ compiler-errors

我有一个函数,它将一个指针作为引用参数,但我无法传入&my_variable函数.我收到的错误是cannot convert parameter from my_class* to my_class*&,使用VS2010.

为什么不允许这样做?

class my_class
{
public:
    my_class();
    my_class(my_class* &parent);
};
Run Code Online (Sandbox Code Playgroud)

-

int main()
{
    my_class a;
    my_class b(&a);                   // Not legal

    // ---
    my_class a;
    my_class* a_ptr = &a;
    my_class b(a);                    // Legal

    // ---
    my_class* a = new my_class;
    my_class* b = new my_class(a);    // Legal
}
Run Code Online (Sandbox Code Playgroud)

Ker*_* SB 10

表达式地址的结果是右值.因此,您无法将其绑定到reference-to-nonconst.

这也没有意义.这就像说int a; &a = 12;明显你不能改变变量的地址a.

相反,你想要这个:

int a;
int * p = &a;
mutate_me(p);    // declared as mutate_me(int * &);
Run Code Online (Sandbox Code Playgroud)

如果函数不是需要突变的指针,由常量-引用或值要么通过.