请帮我在构造函数中初始化“out”?
class logger {
ostream &out;
public:
logger(char *str) : out(/*How do i construct an object using str*/) {}
template <typename T> void print(T &obj) { out << obj; }
};
这个类将被定义为全局的,其他人只需要调用打印方法
更新: 我计划进行以下设置,类(class)用户可以 1)创建一个新的ostream对象,如果他没有。他可以创造,但他也必须管理它。所以不想给这个功能。 2)如果他已经有一个,他可以像“cout/cerr”一样传递。 3) 如果他没有通过任何“cerr”将被假定。
{
ostream &out;
public:
logger() : out(cerr) {}
logger(ostream &o) : out(o){}
logger(char *str) : out(/*How do i construct an object using str*/) {}
最佳答案
您无需将流声明为引用,除非您希望能够从另一个流进行初始化。可能是这样的:
class logger
{
ofstream file;
ostream &out;
public:
logger(char *str) : file(str), out(file) {}
logger(ostream &os) : out(os) {}
// Other functions here, only using "out"
};
关于c++ - 如何在构造函数中初始化 "ostream &out",使用 "char *filename",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226018/