gpt4 book ai didi

c++ - 如何在构造函数中初始化 "ostream &out",使用 "char *filename"

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:27 25 4
gpt4 key购买 nike

请帮我在构造函数中初始化“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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com