Re: Class casting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Justin Miller <millerj@xxxxxxxxxxx> writes:

> Interestingly enough, if you did this:
> 
> int main() {
>         B b;
>         C* c = new C(b);

This alone is not enough. The OP used private inheritance, and will
    therefor get an error like this:

    cl.cc: In function `int main()':
    cl.cc:26: error: `A' is an inaccessible base of `B'

> }
> 
> It will compile and work as expected. The constructor wants an A, a B is
> an A, so everything is fine.
> 
> Why one needs to declare the B first, rather than instantiating the
> temporary as in the code below, I have no idea. Can anyone shed some
> light on this?
[snip]

The C constructor in the OP's code was C::C(A& ) ; it took a reference
    to non-const. It is ill-formed to bind a temporary to a reference
    to non-const.


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux