【发布时间】:2015-03-05 04:03:45
【问题描述】:
我是 C++ 新手,但我的印象是 C++ 中的 virtual 相当于 Java 中的 abstract。 我有以下内容:
//A.h
class A {
public:
void method();
protected:
virtual void helper();
}
使用以下cpp:
//A.cpp
#include "A.h"
void A::methodA() {
//do stuff
helper();
}
然后是派生类:
//B.h
#include "A.h"
class B: public A{
private:
void helper2();
}
以及以下派生的cpp:
//B.cpp
#include "B.h"
void B::helper2() {
//do some stuff
}
void A::helper() {
helper2();
}
但是,编译器似乎不喜欢我在超类中定义的虚拟方法中调用派生类中定义的helper2 方法。它给出了错误“错误:'helper2'未在此范围内声明”。这不是我应该如何使用虚拟方法吗?
顺便说一句,我不能使用关键字override。
【问题讨论】:
-
向我们展示您的真实代码。
A:methodA甚至不是 C++。并告诉我们错误对应于哪一行。 -
virtual!=abstract。 Java 中的所有非静态方法默认都是虚拟的。
标签: c++ inheritance