尝试在类中设置对 const 引用成员的引用
Trying to set the reference to a const reference member in class
-
我想让我的对象A有一个对对象B的常量引用。
-
我想通过一个方法传递该引用。
我有这样的东西
对象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&>
谢谢大家。
相关文章:
- 在 const 函数中通过引用和指针返回之间的区别
- 使用对const结构的const数组的引用进行构造
- 将const引用参数初始化为默认参数会导致悬空引用吗
- 在C++17中,引用const字符串的语义应该是什么
- 为什么当我为 for(auto& it : myUnorderedMap) {... = std::move(it.second)} 时,我会得到一个 const 引用?
- 类型为 "Bucket&"(未限定的 const 限定)的引用不能使用 "SortedList." 类型的值进行初始化 如何修复此错误?
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- 将返回类型专用化为 void 或 const 左值引用
- 在其他容器中使用 boost::container::static_vector 时,GCC 编译错误"将'const s'绑定到类型's&'的引用丢弃限定符"
- 在 C++ 中通过引用传递类成员时,Const 不起作用
- 我们可以有一个 setter 成员函数作为从 const 对象引用的 const 吗?
- 将对象传递给函数而不将其包装到 std::ref 中,而参数被指定为 const 引用
- 错误:对类型 'const ItemInstance' 的引用无法绑定到类型 'void' 的右值
- 包括"lvtocon.h",未定义对'operator<<(std::ostream&, char const*)的引用
- 如何在构造函数中传递 const 引用时强制编译器不接受右值
- 通过使用 const-cast 的非常量引用来延长临时的寿命
- const TYPE&- 我什么时候想通过引用 const 来使用?
- 指针引用const null值
- 三元运算符和通过引用const延长临时对象的生存期
- 为什么必须引用const来避免复制形参?