Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #3506

Re: // how can I access A::a?

From Pete Becker <pete@versatilecoding.com>
Organization Roundhouse Consulting, Ltd.
Newsgroups comp.lang.c++
Date 2011-04-12 14:20 -0400
Message-ID <2011041214200693759-pete@versatilecodingcom> (permalink)
References <bee3f0ea-42ae-4ae4-a254-d5bc9e004f93@k5g2000yqj.googlegroups.com> <io22er$be8$1@dont-email.me>
Subject Re: // how can I access A::a?

Show all headers | View raw


On 2011-04-12 13:34:19 -0400, Victor Bazarov said:

> On 4/12/2011 7:38 AM, Pete Becker wrote:
>> On 2011-04-11 18:52:40 -0400, dick said:
>> 
>>> /* multi_level_inheritance.cpp */
>>> struct A
>>> {
>>> int a;
>>> };
>>> 
>>> struct B1 : public A
>>> {
>>> int a;
>>> };
>>> 
>>> struct B2 : public A
>>> {
>>> int a;
>>> };
>>> 
>>> struct C : public B1, public B2
>>> {
>>> int a;
>>> };
>>> 
>>> int main()
>>> {
>>> C ccc;
>>> 
>>> ccc.a=123;
>>> 
>>> ccc.B1::a=456;
>>> 
>>> /* 0030 */ ccc.B1::A::a=789;
>>> 
>>> }
>>> 
>>> // c++ multi_level_inheritance.cpp
>>> // multi_level_inheritance.cpp: In function int main():
>>> // multi_level_inheritance.cpp:30: error: A is an ambiguous base of C
>>> 
>>> 
>>> // how can I access A::a?
>> 
>> There are two A::a's, which is why the error message said that the
>> reference to A is ambiguous. You need to decide which one you want to
>> access, then name it. Hint: there's one in B1 and one in B2.
> 
> And does the fact that the OP specifically used 'B1::' before 'A::a' 
> matter not?
> 

Sure, but you're giving away the ending. There's clearly a problem in 
the line ccc.a = 123; so it's not at all likely that the only error 
message came from the line marked /* 0030 */.

On the other hand, it does help to carefully read the code in question. :-(

-- 
  Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of "The 
Standard C++ Library Extensions: a Tutorial and Reference 
(www.petebecker.com/tr1book)

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

// how can I access A::a? dick <dick_12345678@hotmail.com> - 2011-04-11 15:52 -0700
  Re: // how can I access A::a? Carlo Milanesi <carlo.nospam.milanesi@libero.it> - 2011-04-12 01:08 +0200
    Re: // how can I access A::a? dick <dick_12345678@hotmail.com> - 2011-04-11 16:56 -0700
      Re: // how can I access A::a? Carlo Milanesi <carlo.nospam.milanesi@libero.it> - 2011-04-12 18:46 +0200
        Re: // how can I access A::a? Miles Bader <miles@gnu.org> - 2011-04-13 15:57 +0900
  Re: // how can I access A::a? Pete Becker <pete@versatilecoding.com> - 2011-04-12 07:38 -0400
    Re: // how can I access A::a? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-04-12 13:34 -0400
      Re: // how can I access A::a? Pete Becker <pete@versatilecoding.com> - 2011-04-12 14:20 -0400
        Re: // how can I access A::a? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-04-12 15:01 -0400
          Re: // how can I access A::a? Pete Becker <pete@versatilecoding.com> - 2011-04-12 15:13 -0400

csiph-web