我遇到了一个有趣的案例:
我有一个文件流作为类的成员,还有一个在文件中写入数据的函数。该对象作为参数传递给另一个类,该类使用该参数初始化其成员。因此,我遇到了一些问题,并且设法用字符串向量解决了这些问题,并向其中添加了行。但是现在我发现我仍然将对象从一个类传递到另一个类。
这是我所拥有的一个例子:
class A
{
private:
std::ofstream oFile;
std::vector<std::string> oFileStringVec;
public:
A()
{
oFile.open("../Path/File.txt", std::fstream::out);
if (!oFile.is_open()) { std::cout<<"Error!!\n";}
}
~A() {}
void writeInfo(const std::string& s)
{ oFileStringVec.push_back(s); }
void closeFile()
{ oFile.close(); }
};
class B
{
private:
A ma;
public:
B(const A& aOb) : ma(aOb) {}
void foo()
{
// ...
ma.writeInfo(mystr);
}
// ...
};
class C
{
private:
A ma;
public:
C(const A& aOb) : ma(aOb) {}
// ...
void foo()
{
// ...
B myB(myA);
//...
}
};
我有一个函数,可以在其中创建一个C对象并调用它的foo()
方法:
void bar()
{
// ...
A myA;
// ...
C myC(myA);
myC.foo();
//...
}
我不太确定这是怎么回事。ofstream是否创建了多次?它只创建一次,然后重新打开?您可以qdvice我在每个析构oFile.close()
函数中添加功能吗?我是否仅将向量作为参数传递,并仅在bar()
函数中使用ofstream ?
我不太确定这是怎么回事。ofstream是否创建了多次?
好感动 从参考:
4)移动构造函数。首先,move构造其他类的基类(不影响rdbuf()指针),然后move构造std :: basic_filebuf成员,然后调用this-> set_rdbuf()将新的basic_filebuf安装为rdbuf( )在基类中的指针。
它只创建一次,然后重新打开?
见第一点。
您能否建议我在每个析构函数中添加oFile.close()函数?
这已经在std::ofstream
析构函数中自动完成了
我是否仅将向量作为参数传递,并仅在bar()函数中使用ofstream?
无法确定以上答案对您的用例有何影响。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句