C ++可以将基类的指针指向派生类的强制转换对象

时间:2018-10-14 14:29:20

标签: c++

以下代码代表了我的问题。

// File1.h
class A {
    public:
        void print() {
            printf("This is class A.");
        }
}

// File2.h
#include "File1.h"
class B: public A {
    public:
        void print() {
            printf("This is class B.");
        }
}

// File3.h
#include "File1.h"
void printClass(void* obj) {
    A* aObj = (A*) obj;
    aObj->print();
}

// Main.c
#include "File1.h"
#include "File2.h"
#include "File3.h"
void main(int argc, char* argv[]) {
    B* bObj = new B;
    printClass(bObj);
}

输出为“这是A类”。我需要它来打印“这是B类”。

我知道这似乎很愚蠢,但是由于实际代码的限制,我需要将可能是B类型的对象强制转换为A类型的对象。 文件3不了解类B。解释是这是一个框架,我希望人们在其中创建自己的派生类A,然后将其对象传递给框架,因此该框架不知道它将得到什么。这是A的派生类。

它必须将B的对象保持为空,因为我使用的是通用链表,节点上装有void *指针,在很多地方都使用相同的链表,因此我将其保持为通用。 / p>

有没有办法做到这一点?

0 个答案:

没有答案