gpt4 book ai didi

c++ - 虚函数返回类型

转载 作者:行者123 更新时间:2023-11-30 01:22:43 25 4
gpt4 key购买 nike

我在基类中定义了一个纯虚函数虚拟 int GetData() const = 0;

在每个派生类中,我定义一个枚举并尝试重写 GetData 函数返回(派生类特定枚举)值;

例如:

class Derived1 : public Base
{
public :
enum D1
{
d1_1 = 0,
d1_2 = 60,
...
d1_100
};
D1 GetData () const;
};
class Derived2 : public Base
{
public :
enum D2
{
d2_1 = 10,
d2_2 = 39,
...
d2_300
};
D2 GetData () const;
};

非常重要的一点是,我无法为所有类的所有枚举值定义相同的范围。上面的代码会产生编译错误:

error C2555: : overriding virtual function return type differs and is not covariant

任何建议 - 如何解决?

最佳答案

在您的特定情况下,事实是您的 virtual方法返回一个原始类型,它没有协变性,因为它不能被放入像 System.Object 这样的普通类型。在 C# 中。
您需要定义一个类作为所有返回类型的基类,以实现协变性。

来自维基百科:

Within the type system of a programming language, covariance and contravariance refers to the
ordering of types from narrower to wider and their interchangeability or equivalence in certain
situations (such as parameters, generics, and return types).

covariant: converting from a specialized type (Cats) to a more general type (Animals):
Every cat is an animal.

Here是文章的链接。

关于c++ - 虚函数返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15866494/

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