gpt4 book ai didi

c++ - 从类型 ‘foo*&’ 的右值初始化类型 ‘foo*’ 的非常量引用无效?

转载 作者:行者123 更新时间:2023-11-28 02:10:34 28 4
gpt4 key购买 nike

想象一下这么简单的代码,为什么会出现编译错误?

#include <iostream>
using namespace std;

class foo{
public:
int *b;
foo(int a) {
b = NULL;
}
};

void bar(foo *&a) {
cout << "OK?" << endl;
}

int main() {
foo a(2);
bar(&a);
return 0;
}

我知道我可以使用 bar(foo *a) 但为什么 & 符号不起作用,我怎样才能让它起作用?

最佳答案

要使其正常工作,请将 main 更改为:

foo *p = &a;
bar(p);

使用左值引用 (foo* &) 意味着参数必须是左值。 p 是左值,因为它是变量的名称。 &a 是纯右值。


如果你想改变 bar 而不是 main 那么你可以使用任何 foo *a, foo * const &a foo * && a,可以用右值初始化。

关于c++ - 从类型 ‘foo*&’ 的右值初始化类型 ‘foo*’ 的非常量引用无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35877920/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com