Regarding the following C++ program:
class Base { };
class Child : public Base { };
int main()
{   
    // Normal: using child as base is allowed
    Child *c = new Child();
    Base *b = c;
    // Double pointers: apparently can't use Child** as Base**
    Child **cc = &c;
    Base **bb = cc;
    return 0;
}
GCC produces the following error on the last assignment statement:
error: invalid conversion from ‘Child**’ to ‘Base**’
My question is in two parts:
reinterpret_cast.  Using these casts means throwing away all type safety.  Is there anything I can add to the class definitions to make these pointers cast implicitly, or at least phrase the conversion in a way that allows me to use static_cast instead? If this was allowed, you could write this:
*bb = new Base;
And c would end up pointing to an instance of Base. Bad.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With