gpt4 book ai didi

c++ - 转换到一个类并从兄弟类调用函数?

转载 作者:太空狗 更新时间:2023-10-29 23:34:42 24 4
gpt4 key购买 nike

我得到一个指向基类的指针(实际上是指向某个派生类的指针)。然后我想在那个派生类上调用一个函数,但我不知道它是哪个。

class Base
{

};

class DerivedOne : public Base
{
public:
void functionA()
{ int x = 0; }
};

class DerivedTwo : public Base
{
public:
void functionA()
{ int x = 0; }
};

int main()
{
Base* derivedTwoPtr = new DerivedTwo();

reinterpret_cast<DerivedOne*>(derivedTwoPtr)->functionA();

return 0;
}

这如我所愿,但我不得不说它看起来很狡猾。它是定义的行为吗?如果不是,是否有动态解决此问题的合法方法?

最佳答案

嘿,别这样。这就是虚拟方法的用途。

class Base
{
public:
virtual void functionA()=0;

};

class DerivedOne : public Base
{
public:
virtual void functionA()
{ int x = 0; }
};

class DerivedTwo : public Base
{
public:
virtual void functionA()
{ int x = 0; }
};

int main()
{
Base* derivedTwoPtr = new DerivedTwo();

derivedTwoPtr->functionA();

return 0;
}

关于c++ - 转换到一个类并从兄弟类调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1518555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com