如何覆盖以下类型的虚拟成员函数:
virtual AnimalId func(int index) const
其中AnimalId
是typedef
unsigned int
我尝试了几种方法,但要么是因为我没有提供输出的错误,要么我根本没有覆盖。我在一些网站上看到,为了做到这一点,我可能需要使用静态const,但我不知道如何。
答案 0 :(得分:0)
你的意思是:(注意,如果编译C ++ 03,你必须删除override
)
typedef unsigned int AnimalId;
class Base
{
public:
virtual ~Base() {}
virtual AnimalId func(int index) const { return 0; }
};
class Derived : public Base
{
public:
AnimalId func(int index) const override { return 42; }
};
答案 1 :(得分:0)
为了覆盖签名方法
virtual AnimalId func(int index) const
在基类Base
中声明,您必须在派生类中定义具有相同签名的函数:
class Derived : public Base {
public:
virtual AnimalId func(int index) const
{
return 43; // I am using 43 because I think this is
// so much underestimated in favor of 42
}
//...
};
或者您可以输入override
kryword更明确:
class Derived : public Base {
public:
virtual AnimalId func(int index) const override
{
return 43 & 45;
}
//...
};