gpt4 book ai didi

c++ - 抽象类中的运算符 <<,C++

转载 作者:行者123 更新时间:2023-11-28 01:55:24 28 4
gpt4 key购买 nike

如果我有一个抽象类,我们称它为“脊椎动物”,它有一个字段 std::string name;它有一个纯虚方法 virtual void print(std::ostream&) const noexcept = 0;这将在子类中被覆盖并在 operator<< 中调用.

我知道多态性是如何工作的,以及如何实现 operator<<在继承类中。

我没有得到的:

我不明白:如何实现 operator<<在那个抽象类中,它使用了虚拟打印功能。为什么这段代码不起作用?我的抽象类需要有 operator<< .

virtual void print(std::ostream&) const noexcept = 0;
std::ostream & operator<<(std::ostream & str, Member &obj)
{
return obj.print(str);
}

也就是抽象类的代码。

最佳答案

您正在尝试返回 print 的结果这是void ,但是 operator<<应该返回 std::ostream .

以下应该有效:

class Vertebrate
{
// ...
virtual void print(std::ostream&) const noexcept = 0;
};

std::ostream& operator<<(std::ostream& stream, Vertebrate& obj)
{
obj.print(stream);
return stream;
}

关于c++ - 抽象类中的运算符 <<,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41409506/

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