作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
FooClass.h:
class FooClass {
.
.
.
private:
World *myWorld;
const Player *&player;
.
.
.
}
FooClass.cpp:
FooClass::FooClass(..., World *w) : myWorld(w), player(w->getPlayer())
{
.
.
.
}
这会触发以下错误:对类型“const Player *”的非 const 左值引用无法绑定(bind)到类型“Player *”的临时值
。然而 const Player *
类型的左值显然是一个 const 左值...
最佳答案
当我们谈论const
引用时,我们指的是它引用的类型是const
。
const Player *&player;
这个声明是一个引用。但是它引用的类型是 const
吗?不,这不对!它引用了一个指针,但该指针不是const
。碰巧指针指向了 const
的东西,但这并没有使指针本身成为 const
。
要将引用绑定(bind)到临时值,您需要使引用成为const
。所以你需要这个:
const Player * const &player;
但是,我无法想象您为什么想要这个。为什么需要引用 getPlayer
返回的临时值?当然,您只需要指针的拷贝:
const Player* player;
关于c++ - 引用指针错误 : Non-const lvalue reference "const * FooBarClass" cannot bind to a temporary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25796558/
FooClass.h: class FooClass { . . . private: World *myWorld; const Pl
我是一名优秀的程序员,十分优秀!