【发布时间】:2016-03-11 18:39:41
【问题描述】:
我有一个父类和一个子类,其中父类在父类方法之一中使用子类之一。在这种方法中,父使用子的构造函数和方法(即从父继承的虚拟方法),我在stackoeverflow上看到了另一个类似的问题,但他们没有使用子的使用方法和构造函数(一个人提到问题更容易,因为他们只使用子类的变量)。我在父级中尝试了一些基本的类转发(将子类放在顶部),但没有奏效。
这是一种没有任何公私区分的设置,试图解决所需的标头:
//foo.h
class Foo{
int x;
Foo(int i);
virtual void funA ();
void funB();
};
//foo.cpp
Foo::Foo(int i) {
x = i;
}
Foo::funA(){cout<<"Foo funA"<<endl;}
Foo::funB(){
Bar b = Bar();
b.funA();
}
//bar.h
class Bar : public Foo {
Bar(int i);
virtual void funA ();
};
//bar.cpp
Bar::Bar(int i) { x = i };
void Bar::funA(){cout<<"Bar funA"<<endl;}
我似乎一直坚持让班级转发工作。如果有人能告诉我如何设置我的包含和类转发,那就太好了!
【问题讨论】:
-
您遇到的实际问题是什么?除了在
bar.h中缺少#include "foo.h"以及在cpp 文件中缺少头文件的包含,它看起来还可以。
标签: c++ inheritance forwarding