建立一个动态库工程,其中加入三个类,基类CBase,子类ChildA,ChildB,将这个三个类均设为导出类,在应用工程中,用子类A或者B去new基类,但编译无法通过,提示需要强制转换,有没有大鸟知道是什么原因造成的,如何解决?

解决方案 »

  1.   

    用子类A或者B去new基类这是什么意思??
      

  2.   


    CBase *pBase = new ChildA;
      

  3.   

    错误信息发来看下。是不是因为没有include子类的头文件?
      

  4.   


    有头,用ChildA或B都能调用
    error C2440: 'initializing' : cannot convert from 'class ChildA *' to 'class CBase *'
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
      

  5.   

    不知道你是怎么写的。这样写应该不会有问题://dll
    class __declspec(dllexport) Base
    {
    public:
    Base(void);
    virtual ~Base(void);
    };class __declspec(dllexport) ChildA : public Base
    {
    public:
    ChildA();
    virtual ~ChildA();
    };class __declspec(dllexport) ChildB : public Base
    {
    public:
    ChildB();
    virtual ~ChildB();
    };//application#include "../TestClass/Base.h"
    #pragma comment(lib, "../Debug/TestClass.lib") Base *p = new ChildA();
    delete p;