Where do you need to add the conversion function operator int () const so that the code below compiles?
struct B
{
    B() { }
    virtual const B * f() const { return this; }
    virtual  ~B() { }
};

struct D1 : public B
{
    D1() : B() { }
    const D1 * f() const { return this; }
    ~D1() { }
};

int main()
{
    const B * const b = new D1;
    const int i = * b->f();
    return 0;
}
Explanation
Into the structure 'B'. The value of a function call is the value returned by the called function except in a virtual function call if the return type of the final overrider is different from the return type of the statically chosen function, the value returned from the final overrider is converted to the return type of the statically chosen function. Standard 0x version 5.2.2.4

Слідкуй за CodeGalaxy

Мобільний додаток Beta

Get it on Google Play
Зворотній Зв’язок
Cosmo
Зареєструйся Зараз
або Підпишись на майбутні тести