c++中void*指针的转换有关问题
c++中void*指针的转换问题
有四个类,Base,Child,GrandChild,Base1这个四个类,然后Base中有一个virtual f()函数,child中没有覆写这个函数,在grandchild中覆写了这个函数,grandchild继承了base1和child类,base1中没有任何东西。
在main中什么都没打印出来,不知道为什么会这样。但是在class GrandChild:public Base1,public Child中换一下Base1和Child的位置的话,就可以打印出来grandchild.f(),我困惑的很。。。。请高手帮忙解答下。谢谢了先。
------解决方案--------------------
有四个类,Base,Child,GrandChild,Base1这个四个类,然后Base中有一个virtual f()函数,child中没有覆写这个函数,在grandchild中覆写了这个函数,grandchild继承了base1和child类,base1中没有任何东西。
在main中什么都没打印出来,不知道为什么会这样。但是在class GrandChild:public Base1,public Child中换一下Base1和Child的位置的话,就可以打印出来grandchild.f(),我困惑的很。。。。请高手帮忙解答下。谢谢了先。
#ifndef BASE_H
#define BASE_H
class Base
{
public:
Base();
virtual void f(); //实现为打印base.f()
virtual ~Base();
};
#endif // BASE_H
#ifndef CHILD_H
#define CHILD_H
#include "Base.h"
class Child:public Base
{
public:
Child();
virtual ~Child();
protected:
private:
};
#endif // CHILD_H
#ifndef GRANDCHILD_H
#define GRANDCHILD_H
#include<Child.h>
#include<Base1.h>
class GrandChild:public Base1,public Child
{
public:
GrandChild();
virtual void f(); //打印grandchild.f()
virtual ~GrandChild();
protected:
private:
};
#endif // GRANDCHILD_H
#ifndef BASE1_H
#define BASE1_H
class Base1
{
public:
Base1();
virtual ~Base1();
protected:
private:
};
#endif // BASE1_H
#include <iostream>
#include<Base.h>
#include<GrandChild.h>
using namespace std;
int main()
{
void *v = new GrandChild();
Base *b = (Base*)v;
b->f();//什么都没打印出来
return 0;
}
------解决方案--------------------
void *v = new GrandChild();
Base *b = (GrandChild*)v;