On 8 Jun 2011, at 23:28, Nilay Vaish wrote:
> On Wed, 8 Jun 2011, Jack Harvard wrote:
>
>>
>>
>> On 8 Jun 2011, at 19:09, Nilay Vaish wrote:
>>
>>> On Wed, 8 Jun 2011, Jack Harvard wrote:
>>>
>>>> When you declare your function private, you can't use instance.function()
>>>> to access it. Is it generating a compile time error?
>>>>
>>>> On 8 Jun 2011, at 00:31, Nilay Vaish wrote:
>>>>
>>>>> Consider the following class declarations --
>>>>>
>>>>> class A
>>>>> {
>>>>> public:
>>>>> virtual void function() = 0;
>>>>> };
>>>>>
>>>>> class B : public A
>>>>> {
>>>>> private:
>>>>> void function();
>>>>> }
>>>>>
>>>>> int main()
>>>>> {
>>>>> B b;
>>>>> b.function();
>>>>> }
>>>>>
>>>>> Will this code compile correctly?
>>>>>
>>>>> --
>>>>> Nilay
>>>
>>> I should say that my example program was not what I intended it to be. The
>>> main function should look like --
>>>
>>> int main()
>>> {
>>> B* b = new B();
>>> A* a = b;
>>> a->function();
>>> return 0;
>>> }
>>>
>>> Now what would happen?
>>
>> This compiles. However, if you do b->function(), you would get the same
>> error as your last example, due to the same reason.
>>
>
> It compiles and executes fine. What surprises me is that even though
> function() is private for class B, still it gets invoked using the pointer
> from class A. I was not aware of this before.
Overriding and access visibility is orthogonal, you use class A pointer to
access its public function.
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev