gpt4 book ai didi

c++ - 设计建议——返回子类时避免 "invalid covariant return type"

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:56 24 4
gpt4 key购买 nike

我有以下情况:

我指定一个纯虚函数:

虚拟 PredictedMatch PredictMatch(const Match &match) const = 0;

我还有:

类 ImpactPredictedMatch : public PredictedMatch

现在,我想做的是:

ImpactPredictedMatch PredictMatch(const Match &match) const;

在一个实现了之前的纯虚函数的类中。我原以为编译器会根据需要简单地转换返回的类型,但我得到:

impact_predictor.h:18:24:错误:“虚拟 ImpactPredictedMatch ImpactPredictor::PredictMatch(const Match&) const”的无效协变返回类型
ImpactPredictedMatch PredictMatch(const Match &match) const;

我承认这在 C++ 中行不通,但我真的很想听取您的建议,了解最好的替代方法。我必须返回一个指针吗?我真的不想这样做,因为我想要自动内存管理,但这是唯一的方法吗?

感谢您的帮助!

最佳答案

当您返回更多派生类的实例时,调用代码可能会存储在基类型的变量中。这样做的结果可能是切片,丢失数据并可能泄漏内存(充其量)。如果您需要协变返回类型,您唯一的选择是指针或引用类型。在这两种情况下,您都需要确保对象至少与指针/引用一样长。

关于c++ - 设计建议——返回子类时避免 "invalid covariant return type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31405825/

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