返回一个通过常量引用在堆上创建的对象
Returning a object created on heap by constant reference
我有一个问题,返回一个常量引用的对象是在堆上创建的。
在我的头中,我定义了两个堆对象,像这样(使用c++ 11语法)
private:
Type1 *type1 = nullptr;
Type2 *type2 = nullptr;
和像这样的两个getter方法
public:
Type1 &GetType1() const;
Type2 &GetType2() const;
现在在我的源文件中,我试图做如下
Type1 &GetType1() const
{
return this->type1;
}
Type2 &GetType2() const
{
return this->type2;
}
为了简单起见,我已经排除了null检查和错误处理。
编译器报错
从表达式中初始化类型' type1& '引用无效类型' type* const '
为什么它告诉我,我试图从一个常量指针转换,当它显然不是一个常量指针,而是一个常量引用?
type1
是一个指针。您需要解引用它来访问对象本身。
您还应该决定是否需要const
引用(在这种情况下,函数可以并且应该是const
)或可变引用(在这种情况下,它可以,但可能不应该是const
)。如果愿意,可以同时提供两个重载:
Type1 const &GetType1() const {return *type1;}
Type1 &GetType1() {return *type1;}
const
,则该函数可用于获取可修改的引用,否则为只读引用。
相关文章:
- 创建引用向量的优雅方式
- 为什么当我们有常量引用时创建临时对象?
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- 如何从绝对地址的 C 样式指针创建对C++对象的引用
- 如何创建对smart_pointer的引用?
- CMake 引用我在 ~/bin 中创建的随机 shell 脚本(即使我删除了它)?
- C++在函数中创建的对 Eigen::Matrix 的悬空引用
- 如何在C++中使用 new 运算符创建对动态创建的数组的引用?
- 从引用创建指向基类的智能指针
- 通过向构造函数其他对象引用页面来创建对象
- C++为具有引用成员变量的类创建复制构造函数
- 创建<int>对整数数组指针的矢量引用 (C++)
- 哪个 const 与哪个引用将更改参数并创建一个 const 对象?
- 为什么从引用创建共享指针会复制对象?
- 三元运算符为C++中返回的引用创建临时
- 从引用创建shared_ptr
- 通过引用创建别名以提升:shared_ptr
- 从原始指针/引用创建智能指针
- 您能否从抽象引用创建具体对象的副本
- Boost::make_shared引用创建的shared_ptr