gpt4 book ai didi

c++ - 使用由 ref 传递的 std::ostream

转载 作者:行者123 更新时间:2023-11-30 02:45:15 26 4
gpt4 key购买 nike

在我的代码中,我的类的一个初始化函数是这样的:

void MyApp::start(std::ostream & log_output)
{
theLogOutput = log_output;
// do stuff...
}

theLogOutput在 .h 文件中声明:

std::ostream theLogOutput;

但是编译器给我这个错误:

Error 10 error C2248: 'std::basic_ostream<_Elem,_Traits>::operator =' : cannot access private member declared in class 'std::basic_ostream<_Elem,_Traits>'

最佳答案

std::ostream 不可复制;它具有可变状态并且是多态,这使得复制和赋值成为问题。在C++11,它是可移动的,如果你想让调用者放弃所有占有(但你必须明确地移动它)。大部分的但是,时间,您不需要字符串的拷贝,也不需要唯一的所有权;在这些情况下,您将该成员作为引用好吧,或者如果类(class)必须支持分配,你做member一个指针,取参数的地址。

在你的例子中,因为你正在修改一个已经存在的变量,你需要使用指针;必须初始化引用,并且初始化后无法重新安装。

关于c++ - 使用由 ref 传递的 std::ostream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24698670/

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