-1

首先,非常抱歉,我无法提供源代码(无论如何都是我的母语)。所以,我正在做的是在(全局)函数中声明一个 ifstream 对象,然后将它发送到一个类的成员函数(将其作为引用),然后该函数将它传递给另一个成员函数在前面提到的类中使用的类(也将其作为参考)。我已经确定了在另一个类中的类中的成员函数中读取的分段错误(哦,我的上帝......),我尝试过 eof() 只是为了检查它是否被某种方式弄乱了,它返回 0(如预期的那样)而不会崩溃,只有当我尝试通过 ifstream 对象获取一些数据作为输入时它才会崩溃。

很抱歉递归描述/没有提供源代码,如果您想帮助并有任何问题,请提出,我会及时回复。

4

1 回答 1

2

首先,非常抱歉,我无法提供源代码(无论如何都是我的母语)。所以,我正在做的是在(全局)函数中声明一个 ifstream 对象,然后将它发送到一个类的成员函数(将其作为引用),然后该函数将它传递给另一个成员函数在前面提到的类中使用的类(也将其作为参考)。

所以,像这样:

class Foo {
public:
    // appropriate constructor here
    std::ifstream &stream;
};

Foo f;
void Func() {
    std::ifstream stream("whatever");
    f.stream = stream;
}

是的,那很糟糕。您的流对于您的全局函数是本地的。一旦函数返回任何指向它的引用或指针都是无效的,因为它是以自动存储持续时间存储的。如果您希望事物保持活力,那么您将需要动态分配它(可能是次优的)或在类本身中构建它。

于 2012-06-26T22:54:06.860 回答