- 主题:如何才能调用B类的函数?
c++中,有三个类A和B和C,其中C继承B,B继承A,现在我创建一个C类对象,把该对象指针赋给一个A类指针,那么该对象里面实际上包含一个B的子对象,A类有一个纯虚函数foo,在B和C类中都有实现,我现在调用A指针的foo函数,实际调用的是C的实现。如何实现把C类对象的B子对象抽取出来,并赋给一个A类指针,使得调用foo的时候调用的时B的foo?
--
FROM 115.171.62.*
父类指针调用子类函数,需要down cast
子类指针调用父类函数,可以b->A::foo()
【 在 anything1999 的大作中提到: 】
: c++中,有三个类A和B和C,其中C继承B,B继承A,现在我创建一个C类对象,把该对象指针赋给一个A类指针,那么该对象里面实际上包含一个B的子对象,A类有一个纯虚函数foo,在B和C类中都有实现,我现在调用A指针的foo函数,实际调用的是C的实现。如何实现把C类对象的B子对象抽取
: 隼矗⒏掣桓鯝类指针,使得调用foo的时候调用的时B的foo?
--
FROM 115.171.155.*
如何能不加A::前缀或者B::就能调用B的foo呢?
【 在 jimmycmh 的大作中提到: 】
: 父类指针调用子类函数,需要down cast
: 子类指针调用父类函数,可以b->A::foo()
:
--
FROM 115.171.62.*
你的需求是什么?
【 在 anything1999 的大作中提到: 】
: 如何能不加A::前缀或者B::就能调用B的foo呢?
--
FROM 115.171.155.*
有个对象,想要把它转换为它的一个父对象,并且调用的重载函数也要是父类的。
有个集合类,里面好多指针,某个对象一旦转换之后,就完完全全是转换后的对象了。
【 在 jimmycmh 的大作中提到: 】
: 你的需求是什么?
:
--
FROM 115.171.62.*
这个把指针cast一下不就好了吗?
【 在 anything1999 的大作中提到: 】
: 有个对象,想要把它转换为它的一个父对象,并且调用的重载函数也要是父类的。
: 有个集合类,里面好多指针,某个对象一旦转换之后,就完完全全是转换后的对象了。
--
FROM 115.171.155.*
不管如何转换,vtbl-ptr都指向C类的vtbl
【 在 jimmycmh 的大作中提到: 】
: 这个把指针cast一下不就好了吗?
:
--
FROM 123.112.20.*
这种需求不甚合理,也不应该用虚函数实现
【 在 anything1999 的大作中提到: 】
: 有个对象,想要把它转换为它的一个父对象,并且调用的重载函数也要是父类的。
: 有个集合类,里面好多指针,某个对象一旦转换之后,就完完全全是转换后的对象了。
:
--
FROM 123.112.20.*
如果你非要所谓的子对象,那么就应该用组合,而非继承。
【 在 anything1999 的大作中提到: 】
: c++中,有三个类A和B和C,其中C继承B,B继承A,现在我创建一个C类对象,把该对象指针赋给一个A类指针,那么该对象里面实际上包含一个B的子对象,A类有一个纯虚函数foo,在B和C类中都有实现,我现在调用A指针的foo函数,实际调用的是C的实现。如何实现把C类对象的B子对象抽取出来,并赋给一个A类指针,使得调用foo的时候调用的时B的foo?
: --
: FROM 115.171.62.*
--来自微水木3.5.10
--
FROM 39.144.104.*
cast是不行滴
【 在 jimmycmh 的大作中提到: 】
: 这个把指针cast一下不就好了吗?
:
--
FROM 115.171.63.*