它的确定,具有共享功能
:
class A
{
virtual x() = 0;
virtual y() = 0;
}
class B
{
virtual x() = 0;
virtual z() = 0;
}
class C : A , B
{
x();
y();
z();
}
与两个库,其一个仅知道A和另一个的共享类C的实例只知道B?
像:
库1:
#include <a>
A* a = function_in_the_core_that_creates_a_C_and_retrieves_it();
a->x();
a->y();
库1:
#include <b>
B* b = function_in_the_core_that_creates_a_C_and_retrieves_it();
b->x();
b->z();
我问这个,因为我不知道如果编译器都会有问题要解决,因为该功能图书馆没有C的祖先的全部知识。
编辑:
function_in_the_core_that_creates_a_C_and_retrieves_it()应该返回一个C *不是C.我认为这是明显的,因为我们正在谈论虚函数。
当我说:“共享类C的实例”,我的意思是返回一个C *。我的问题是,如果由核心返回一个C *,每个库都会找到他们想要的函数,因为他们对C没有任何了解。 – user246100 2012-02-27 13:05:11
这是行不通的。你需要提供'C'的完整定义才能返回一个指针。如果你返回一个只是向前声明的'C *',它将不会运行,并且你将无法安全地将它转换为'A'或'B'。它或者是一个'C'实现,或者是写两个函数分别返回'A'或'B'。 – Dervall 2012-02-27 13:09:49
要清楚的是,如果您提供'C'的前向声明或完整声明,则只能返回指向'C'的指针。前向声明将转换为B或A是非法的。 – Dervall 2012-02-27 13:12:16