在类中存储引用
Storing a reference within class
我试图在我的类中保留对不同类的指针的引用。我正在尝试查看是否有办法做到这一点,而无需在 ctor 中定义它。我无法复制,因为我正在使用返回的特定指针来执行其他操作。
class MyClass {
private:
OtherClassPtr &m_ptr_ref;
public:
MyClass();
public:
void MyFunction() {
m_ptr_ref = otherClassPtr->GetPtrRef();
if(!m_ptr_ref)
return;
}
};
引用需要在声明点初始化,并且不能在其生存期内更改为引用其他对象。因此,您需要在构造函数中设置它。
另一种方法是存储指针。我认为引用是语法更好的指针,尽管不同的语法赋予了它不同的语义含义;它的行为类似于它引用的对象,因此具有与该对象相同的值和地址。与您的问题最相关的是,赋值运算符的工作方式类似于对象的赋值,而不是指针。这就是它不能改变指称的原因。
您可以保留指向指针的指针:
OtherClassPtr* m_ptr_ref;
/* ... */
m_ptr_ref = &otherClassPtr->GetPtrRef();
另一种方法是使用 std::reference_wrapper
,但这只不过是一个花哨的指针,我认为使用指针没有优势。
相关文章:
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- 存储对(可能)临时对象的引用是否合法,只要引用不比对象存活?
- 在C++中,如果成员引用在其声明中初始化,为什么需要存储空间?
- 我们如何在指针中存储对对象的引用?
- 如何在拥有的C++对象中安全地存储对所有者的引用?
- C++ 在节点内存储对数据对象的引用,而不复制数据
- 标准库容器结构是否存储副本或引用?
- 如果结果存储在变量中forward_as_tuple然后在 std::apply 中使用之前丢失右值引用
- 是否可以将引用存储在标准::任何中
- 在模板中存储右值引用的危险
- 通过引用传递对象并将其存储为成员变量
- 每当传递lvalue时,每当通过rvalue传递时,将const引用存储
- 按名称存储和引用变量列表
- 在类中存储引用
- 我应该将引用存储在c++中的类中吗
- c++将对纯虚拟类的引用存储为类的成员
- 将对象引用存储在一个简单的容器中
- 您可以使用 boost::reference_wrapper 将引用存储在 STL 容器中吗?
- 我可以在不产生引用存储成本的情况下对变量进行别名吗
- 如何将对象作为引用存储在数组、列表或映射中