【发布时间】:2015-07-20 14:20:51
【问题描述】:
我正在尝试使用文件流来读取输入,当我在类之间传输文件时,我需要能够维护指向文件的指针。以下是我正在尝试做的粗略概述:
class A {
friend class B;
public:
void somefunction();
private:
fstream o;
B b;
};
class B {
fstream * in;
public:
void input();
void modify(fstream *);
};
这是我正在尝试使用的两个类的简单表示。我有一个像这样修改 fstream 的函数:
void A::somefunction() {
B.modify(o);
}
void B::modify(fstream * o) {
this -> in = o;
}
在这里,我传递了另一个 fstream,以便类 B 现在维护指向该文件的指针。但是,当我尝试使用它读取输入时,我失败了:
void B::input() {
while (*in >> object) {
cout << object << endl;
}
}
该语句仅计算为 false 并且 while 循环不执行。我想知道这是否是流的问题,但我不确定。有人有什么建议吗?
编辑:
B b;
b.modify(o);
我想将 A 类中的 fstream o 传递给 B 类。我将 A 类中的 fstream * in 设置为 B 类中的 fstream o。我忘了添加 fstream o 正在从文件中读取,我想基本上将流“传输”到 B 类,以便它可以从文件中读取。
【问题讨论】:
-
你能把所有的东西都打包成一些最小的可编译的例子然后贴在这里吗?特别是,您如何/在哪里将
A的流传递给B? -
@vsoftco 通过修改函数 - 我从 A 类传入 fstream o,然后在 B 类中将 fstream 设置为等于 o。这将维护指向 B 类中打开文件的指针, A 现在可以从中读取/写入。
-
不明白。
o是A的成员,因此您需要A的实例才能将成员o传递给B的实例。A需要有某种fstream* get_stream() const成员函数,然后您可以在调用b.modify(a.get_stream())时调用它。
标签: c++ pointers fstream cin istream