Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   C++ (http://www.velocityreviews.com/forums/f39-c.html)
-   -   accessing parent class method (http://www.velocityreviews.com/forums/t617867-accessing-parent-class-method.html)

ArbolOne 06-01-2008 12:43 AM

accessing parent class method
 
In my program I am using two classes foo1, the parent class, and foo2
the child class!
foo2 has overloaded inserter and extractor operator, but so does foo1!
How can I access foo1 inserter or extractor?


Thanks

Erik Wikström 06-01-2008 07:57 AM

Re: accessing parent class method
 
On 2008-06-01 03:07, Victor Bazarov wrote:
> ArbolOne wrote:
>> In my program I am using two classes foo1, the parent class, and foo2
>> the child class!
>> foo2 has overloaded inserter and extractor operator, but so does foo1!
>> How can I access foo1 inserter or extractor?

>
> Post your code. It is easier when there is substance to the discussion.
>
> Meanwhile, here is the example:
>
> struct foo {
> void foobar();
> };
>
> struct bar : foo {
> void foobar();
> };
>
> int main() {
> bar b;
> b.foobar(); // calls bar::foobar
> b.foo::foobar(); // call foo::foobar
> }


I would call it bad style to explicitly call a parent's implemenetation
of a function (and bad design if you have to), unless it is done in the
child's implementation of the same function:

#include<iostream>

struct foo1 {
virtual void foobar() {
std::cout << "foo1\n";
}
};

struct foo2 : public foo1 {
virtual void foobar() {
std::cout << "foo2\n";
foo1::foobar(); // Call foo1's foobar()
}
};

int main() {
foo1* f = new foo1();
f->foobar();
delete f;
f = new foo2();
f->foobar();
}

--
Erik Wikström

ArbolOne 06-01-2008 01:44 PM

Re: accessing parent class method
 
On Jun 1, 3:57 am, Erik Wikstrm <Erik-wikst...@telia.com> wrote:
> On 2008-06-01 03:07, Victor Bazarov wrote:
>
>
>
> > ArbolOne wrote:
> >> In my program I am using two classes foo1, the parent class, and foo2
> >> the child class!
> >> foo2 has overloaded inserter and extractor operator, but so does foo1!
> >> How can I access foo1 inserter or extractor?

>
> > Post your code. It is easier when there is substance to the discussion.

>
> > Meanwhile, here is the example:

>
> > struct foo {
> > void foobar();
> > };

>
> > struct bar : foo {
> > void foobar();
> > };

>
> > int main() {
> > bar b;
> > b.foobar(); // calls bar::foobar
> > b.foo::foobar(); // call foo::foobar
> > }

>
> I would call it bad style to explicitly call a parent's implemenetation
> of a function (and bad design if you have to), unless it is done in the
> child's implementation of the same function:
>
> #include<iostream>
>
> struct foo1 {
> virtual void foobar() {
> std::cout << "foo1\n";
> }
>
> };
>
> struct foo2 : public foo1 {
> virtual void foobar() {
> std::cout << "foo2\n";
> foo1::foobar(); // Call foo1's foobar()
> }
>
> };
>
> int main() {
> foo1* f = new foo1();
> f->foobar();
> delete f;
> f = new foo2();
> f->foobar();
>
> }
>
> --
> Erik Wikstrm

I got it now!
Thanks.


All times are GMT. The time now is 08:23 PM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.