尝试在类中设置对 const 引用成员的引用

Trying to set the reference to a const reference member in class

本文关键字:引用 const 成员 设置      更新时间:2023-10-16
  1. 我想让我的对象A有一个对对象B的常量引用。

  2. 我想通过一个方法传递该引用。

我有这样的东西

对象A.h

private:
const objectB &__contextObjectB;
void addObjectBContext(const  objectB &contextObjectB) const;

对象A.cpp

void addObjectBContext(const objectB &contextObjectB) const
{
    const_cast<objectB&> (__contextObjectB) = &contextObjectB;
}

我得到这个错误表达式必须是可修改的 L 值。

我认为与const_cast的整个交易是使左值表达式可修改。

有人可以帮我吗?

只能初始化一次引用。 如果引用是类成员,则需要在构造函数中初始化它,因为这是初始化所有类成员的地方。 那就像

class Bar {};
class Foo
{
public:
    Foo(Bar & b_) : b(b_) {}
private:
    Bar& b;
};

一旦引用被初始化,就无法更改它作为引用的内容。 如果你需要这种语义,那么你就需要使用某种指针。

另请注意,使用 const_cast 强制转换const对象的const,然后对其进行修改是未定义的行为。

@NathanOliver解释了为什么我不能这样做,为此表示感谢

@Jarod42给我一个 2 个选择。

由于某种原因,下面的代码不起作用。左值不可修改

const objectB *__contextObjectB;

但似乎是一个不错的选择。

std::reference_wrapper<const objectB&>

谢谢大家。

相关文章: