我正在为3dsmax制作一个插件DLL。 SDK包含一个特殊的类,其中包含纯虚函数,文档中说这些函数由max本身实现。我知道这些函数已经实现,因为类实例有时会通过我的插件中的函数传递给我的插件,这些函数来自其核心api的max调用。
但是,如果我尝试在我的代码中实例化该类,我不能,因为它的所有函数都是3dsmax SDK中的纯虚函数。
有没有办法告诉c ++编译器,即使它看到的函数是纯虚拟的,它们也是在其他地方实现的(在程序可见的另一个.dll中)?有问题的函数的声明不在任何3dsmax .libs中或包含......所以它100%确定它们超出了我的代码范围....但它们是在那里。
我是c ++的新手,所以如果这是一个愚蠢的问题我会道歉。
答案 0 :(得分:1)
纯虚拟意味着它们没有为该类实现。对于您的代码或3dsmax代码,该类确实无法实例化。
3dsmax有子类,它确实为这些虚拟方法提供了实现。然后,它们通过指向抽象基类的指针为您提供对子类实例的访问。但是你没有得到指向基类本身实例的指针。
如果3dsmax API提供了可以实例化的任何具体基类,那么您应该实例化它们。如果没有,那么您将不得不按预期使用API来获取指向所需实例的指针。这是一件好事。你应该遵循API。
答案 1 :(得分:1)
不,您无法实例化您没有可用类定义的抽象类的子类(即头文件)。