[C++-sig] virtual functions with default implementation
Stefan Seefeld
stefan at seefeld.name
Mon Aug 17 23:44:53 CEST 2015
Hi Alex,
On 17/08/15 02:54 PM, Alex Mohr wrote:
> On 8/17/2015 11:39 AM, Stefan Seefeld wrote:
>> For the case with default implementation, the tutorial gives this
>> wrapper:
>>
>> struct BaseWrap : Base, bpl::wrapper<Base>
>> {
>> virtual std::string func() const
>> {
>> if (bpl::override f = this->get_override("func"))
>> return f();
>> else
>> return Base::func();
>> }
>> std::string default_func() const { return this->Base::func();}
>> };
>>
>> and it seems to me much more natural to implement the "default" case
>> directly in the "else" branch above, rather than add it to the
>> "def()" call.
>
> I think this might be so that python can invoke the superclass (C++)
> implementation directly in its override, but I'm not 100% sure.
Ah, that's it !
I just tried
Konsole output
>>> class C(Base):
... def func(self): return super(C, self).func()
which yields an infinite recursion (until stack overflow) unless I
define "func" with the additional default function.
Thanks !
Stefan
--
...ich hab' noch einen Koffer in Berlin...
More information about the Cplusplus-sig
mailing list