0
想象我有一个类A,B & C均从A,B继承”从B.C++调用子功能上父的矢量对象
乙继承”具有一个成员变量,其是A的指针的矢量 我创建了一个名为bP
的新B,并在其中存储了一个新的C,名为c
。 现在我想打电话给c.f()
,这个函数只适用于C类型。 我打电话给bP[0]->f()
。 我得到的错误是“f():不是'A'的成员”。 我可以从父对象的矢量调用子函数吗?
想象我有一个类A,B & C均从A,B继承”从B.C++调用子功能上父的矢量对象
乙继承”具有一个成员变量,其是A的指针的矢量 我创建了一个名为bP
的新B,并在其中存储了一个新的C,名为c
。 现在我想打电话给c.f()
,这个函数只适用于C类型。 我打电话给bP[0]->f()
。 我得到的错误是“f():不是'A'的成员”。 我可以从父对象的矢量调用子函数吗?
I believe your code structure is something like this :
class A
{
};
class B: public A
{
};
class C: public A
{
};
class B': public B
{
public:
vector<A*> vec;
B(class C* c)
{
vec.push_back(c);
}
};
int main()
{
C *c = new C();
B'* b = B'(c);
C* c = static_cast<C*>(((b->vec).front())->f()); //Downcasting
return;
}
请提供[mcve];这样我们不必“想象”,我们可以看看实际的代码。 –
如果指针指向子对象,是的。你可以做'static_cast(bP [0]) - > f'。但是请下次尝试包含一些代码,这会让您更容易理解您正在尝试执行的操作。 –
George
什么是B''?请提供代码 – instance