将指针传递给派生类,该函数需要指向基类的指针?

时间:2013-01-11 14:57:24

标签: c++ pointers reference polymorphism virtual

行。我不是很擅长C ++中的多态,但我现在遇到了一个问题。想象一下这些课程:

class Parent {
public:
     Parent();
     virtual ~Parent();
};

class Child : public Parent
{
public:
     Child();
};

class Director
public:
     Director();
     void doStuff(Parent* p);
};


// Assume we have a instance of Director, and call the doStuff function here:
doStuff(new Child()); // Gives error

我收到错误

  

无法将参数1从“Child *”转换为“Parent *”

我的简单问题是,为什么这不起作用? 我是否需要进行任何类型的铸造或什么,或者问题是什么?

修改 我把所有文件放在这里。 我认为问题在于我的内容,因为我真的不知道如何使用#ifndef等来完成它。请检查出来。
Director.h:http://pastebin.com/2uJqezju
Director.cpp:http://pastebin.com/SZ6cuBJC
IApp.h:http://pastebin.com/euCAwpnL
IApp.cpp:http://pastebin.com/JHDuQUhW
IScene:h:http://pastebin.com/cweH9G6p
IScene.cpp:http://pastebin.com/9epW0dRA

然后我创建了一些实例:
GameApp.h(继承EDGE :: IApp):http://pastebin.com/QbjbVqSi
GameApp.cpp:http://pastebin.com/sYJvmbeP
GameScene.h(继承EDGE :: IScene):http://pastebin.com/K1WYNvRf
GameScene.cpp:http://pastebin.com/uJx3FLBW

不要害怕检查它们,每个都有10行代码。但问题出在GameApp.cpp中,我尝试创建一个GameScene实例,并将其传递给Director-> createNewScene(IScene *场景)。

1 个答案:

答案 0 :(得分:1)

Director.h:

class IScene;

应该在命名空间内