gpt4 book ai didi

c++ - 'std::ios_base::ios_base(const std::ios_base&)' is private' 错误,同时为 std::ostram 重载运算符 <<

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:06 30 4
gpt4 key购买 nike

我有一个看起来像这样的结构:

sturct person
{
string surname;
person(string n) : surname(n) {};
}

我需要重载 operator<<对于 std::ostreamperson .我写了这个函数:

std::ostream operator<<(std::ostream & s, person & os)
{
s << os.surname;
return s;
}

但我收到此错误:

/usr/include/c++/4.6/bits/ios_base.h|788|error: ‘std::ios_base::ios_base(const std::ios_base&)’ is private|

/usr/include/c++/4.6/bits/basic_ios.h|64|error: within this context

/usr/include/c++/4.6/ostream|57|note: synthesized method ‘std::basic_ios::basic_ios(const std::basic_ios&)’ first required here |

最佳答案

std::ostream 不可复制构造,当您按值返回时,您正在复制构造。虽然return value optimization意味着实际上可能不会进行复制,编译器仍然要求可以进行复制。

此运算符的规范返回值是非常量引用:

std::ostream& operator<<(std::ostream& o, const SomeType& t);

关于c++ - 'std::ios_base::ios_base(const std::ios_base&)' is private' 错误,同时为 std::ostram 重载运算符 <<,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089547/

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