分段错误,因为 ifstream 对象作为参考发送
Segmentation fault because of ifstream obj. sent as reference?
首先,我非常抱歉,但我无法提供源代码(无论如何,它是我的母语)。因此,我正在做的是在(全局)函数中声明一个 ifstream 对象,然后将其发送到类的成员函数(将其作为引用获取),然后该函数将其传递给在前面提到的类中使用的类的另一个成员函数(也将其作为引用获取)。我已经查明了用于读取其他类中类中的成员函数中的分段错误(哦,天哪......),我尝试了 eof() 只是为了检查它是否以某种方式搞砸了,它返回 0(如预期)而不会崩溃,只有当我尝试通过 ifstream 对象获取一些数据作为输入时它才会崩溃。
很抱歉递归描述/不提供源代码,如果您想提供帮助并有任何疑问,请询问,我会及时回复。
首先,我非常抱歉,但我无法提供源代码(无论如何,它是我的母语)。因此,我正在做的是在(全局)函数中声明一个 ifstream 对象,然后将其发送到类的成员函数(将其作为引用获取),然后该函数将其传递给在前面提到的类中使用的类的另一个成员函数(也将其作为引用获取)。
所以,像这样:
class Foo {
public:
// appropriate constructor here
std::ifstream &stream;
};
Foo f;
void Func() {
std::ifstream stream("whatever");
f.stream = stream;
}
是的,这很糟糕。 您的流是全局函数的本地流。一旦函数返回任何引用或指针都是无效的,因为它以自动存储持续时间存储。 如果你想让这个东西保持活力,那么你将需要动态分配它(可能是次优的)或在类本身中构造它。
相关文章:
- 通用参考 l 值不复制对象
- 类的方法和对象。参考?智能指针?简单的初始化?
- JNI返回Java对象,可以返回本地参考,还是必须是全局
- neak_ptr vs unique_ptr参考 - 传递接口inmand tos to其他对象
- 如何使对象通过RVALUE参考通过而没有复制
- 超载函数既不按值,也不是通过参考来对象,而是将撤销的指针换成对象
- 通过参考返回C 中的对象
- C 通过参考返回本地对象
- 对矢量中具有常数参考属性的对象进行排序
- 无法将类对象转换为函数默认参数中的参考
- 将参考作为C 中的对象传递
- 常量参考延长对象的寿命,然后是const_cast,这是一个好主意吗?
- 面向对象编程 - 位域私有结构的公共参考
- 在C 中进行可选参考,保留对象寿命
- C 将对象删除为参考
- 升压信号参考对象超出范围?
- C 复制分配运算符,用于参考对象变量
- STD :: BITSET ::参考对象在STD :: BITSET ::操作员[]中创建的寿命
- 参考对象的向量
- 未定义的参考(对象变量和基础变量),C++AVR