我已经阅读了有关该主题的多个问题和答案,但不幸的是,它们都没有帮助。我想在两个类 A 和 B 中使用相同的调试文件输出,其中 A 的实例创建 B 的实例。我有类似的东西:
class A {
public:
A() : debug("debug.txt") { };
private:
std::ofstream debug;
}
class B {
public:
B(std::ofstream &ofs) : debug(ofs) { };
private:
std::ofstream &debug;
}
并创建它的一个实例
B *b = new B(debugUnderlying);
效果很好。但是,我现在想要一个额外的构造函数,以便能够在没有 ofstream 的情况下使用它。然后该对象将打开一个新文件。我明白了,因为我有一个参考,我需要在初始化列表中对其进行初始化。我尝试了多种方法:
B() : debug() { debug.open("debug2.txt"); };
error: invalid initialization of non-const reference of type ‘std::ofstream& {aka std::basic_ofstream<char>&}’ from an rvalue of type ‘const char*’
或者
B() : debug("debug2.txt") { };
error: value-initialization of reference type ‘std::ofstream& {aka std::basic_ofstream<char>&}’
或(很清楚,因为我有一个临时对象)
error: invalid initialization of non-const reference of type ‘std::ofstream& {aka std::basic_ofstream<char>&}’ from an rvalue of type ‘std::ofstream {aka std::basic_ofstream<char>}’
我怎样才能做到这一点?感谢您的任何建议!