pro*_*cer 3 c++ persistence pointers reference member
假设Class包含一个名为matrix_的引用:
Class.h
class Class
{
Matrix& matrix_;
}
Run Code Online (Sandbox Code Playgroud)
Class.cpp
Class::Class() : matrix_(Matrix())
{
}
Run Code Online (Sandbox Code Playgroud)
我得到错误:从'Matrix'类型的临时类型初始化'Matrix&'类型的非const引用.
我看到问题是临时对象将消失,引用将指向NULL.如何为引用创建持久对象?我想使用引用,因为该成员应该是常量.
Class::Class() : matrix_(Matrix()) 尝试将引用设置为指向临时对象,这是非法的.
好吧,有一个const引用和临时绑定的情况,但严重的是,不要去那里.
看起来你只需要使用聚合:
class Class
{
const Matrix matrix_;
};
Run Code Online (Sandbox Code Playgroud)
和初始化列表:
Class::Class() : matrix_() /* or any params to the constructor if you need them */
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2590 次 |
| 最近记录: |