gpt4 book ai didi

c++ - 覆盖子类中的返回类型

转载 作者:行者123 更新时间:2023-11-27 23:59:06 25 4
gpt4 key购买 nike

给出的是类 IPrinterManager 及其子类 ColorPrinterManagerColorPrinterAbstractPrinter 的子类。编译中止并显示消息 ColorPrinterManager::print is not a covariant of IPrinterManager::print。我该如何解决这个问题?

class IPrinterManager
{
public:

virtual std::vector<std::shared_ptr<AbstractPrinter>>* print(std::string text) = 0;

};

class ColorPrinterManager : public IPrinterManager
{
public:

std::vector<std::shared_ptr<ColorPrinter>>* print(std::string text);

};

最佳答案

您需要返回std::vector<std::shared_ptr<AbstractPrinter>>* .没有办法绕过它。您仍然可以通过 ColorPrinter 填充它指针。

协变返回类型允许您指定更派生的类型,作为虚函数的返回类型。但是vector s 的指针没有这样的关系。


此外,请考虑按值返回。借助 NRVO 和移动语义, vector 非常擅长有效地管理它们的资源。

关于c++ - 覆盖子类中的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40461479/

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