gpt4 book ai didi

c++ - 在子类中实现纯虚方法

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

我正在子类中的父类中实现一个纯虚函数。

当我尝试在 eclipse 中实例化子类时,它说

The type 'derived' must implement the inherited pure virtual method 'Base::compareTo'

我很确定我这样做了。我的基类是..

基础.h

#ifndef BASE_H_
#define BASE

class Base{
public:
Base();
virtual ~Base();
virtual int compareTo(void* compare)=0;
};

#endif /* BASE*/

然后是我的derived.h

#ifndef DERIVED_H_
#define DERIVED_H_
#include "Base.h"

class Derived : public Base {

public:
int x;
Derived(int y);
virtual ~Derived();
int compareTo(void* compare);

};

#endif /* DERIVED_H_ */

派生.cpp

#include "Derived.h"
#include "Base.h"

Derived::Derived(int y) {
// TODO Auto-generated constructor stub
x=y;
}

Derived::~Derived() {
// TODO Auto-generated destructor stub
}

int Derived::compareTo(void* compare) {

Derived* compared;
int result=0;

if(compared=dynamic_cast<Derived*>(compare))
{
if(x<compared->x)
{
result=-1;
}
else
{
result=1;
}
}

return result;

}

最佳答案

我假设此消息来自 eclipses 代码分析器,而不是来自您的编译器。代码分析器错了,你是对的。您已经从 Derived 中的基类正确实现了纯虚方法。如果您尝试实例化 Derived,代码应该可以编译。

您的 CDT 版本可能低于 8.2.1?如果是这样,您可能会遇到 this bug这应该在 8.2.1 中修复。

但是您的代码中还有另一个错误。你不能 dynamic_cast 空指针。

关于c++ - 在子类中实现纯虚方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275270/

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