Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Question about pure virtual functions

Reply
Thread Tools

Question about pure virtual functions

 
 
Sergey
Guest
Posts: n/a
 
      10-31-2005
Is it possible to realize such an algorithm (this one is not working):

class a1 {

public:

void af () { bf(); }
virtual void bf () = 0;

};

class b1 {

public:

virtual void bf () { }

};

class c1 : public a1, public b1 { };

main () {

c1 x;

}

The general idea is in that if you have one group of classes for one
option and another group of classes for another option you can combine
the general class by any class from the first group and by any class
from the second group. Question is how can functions of one group refer
to functions of another?
Thank you for answers.
Sergey
 
Reply With Quote
 
 
 
 
David Hilsee
Guest
Posts: n/a
 
      10-31-2005
"Sergey" <(E-Mail Removed)> wrote in message
news:dk3npq$6ek$(E-Mail Removed)...
> Is it possible to realize such an algorithm (this one is not working):
>
> class a1 {
>
> public:
>
> void af () { bf(); }
> virtual void bf () = 0;
>
> };
>
> class b1 {
>
> public:
>
> virtual void bf () { }
>
> };
>
> class c1 : public a1, public b1 { };
>
> main () {
>
> c1 x;
>
> }
>
> The general idea is in that if you have one group of classes for one
> option and another group of classes for another option you can combine
> the general class by any class from the first group and by any class
> from the second group. Question is how can functions of one group refer
> to functions of another?
> Thank you for answers.
> Sergey


I'm not 100% sure of what you're trying to do, but it looks like some sort
of "mixin" where the b1 class contains the implementation for a1::bf(), but
it does not inherit from a1, and c1 must somehow "combine" the relationship
between the two classes. You can do this with a simple, straightforward
"override and delegate" function:

class c1 : public a1, public b1 {
virtual void bf() {
b1::bf();
}
};

Here, c1::bf() is invoked, and it calls b1::bf().

--
David Hilsee


 
Reply With Quote
 
 
 
 
John Carson
Guest
Posts: n/a
 
      10-31-2005
"Sergey" <(E-Mail Removed)> wrote in message
news:dk3npq$6ek$(E-Mail Removed)
> Is it possible to realize such an algorithm (this one is not working):
>
> class a1 {
>
> public:
>
> void af () { bf(); }
> virtual void bf () = 0;
>
> };
>
> class b1 {
>
> public:
>
> virtual void bf () { }
>
> };
>
> class c1 : public a1, public b1 { };
>
> main () {
>
> c1 x;
>
> }
>
> The general idea is in that if you have one group of classes for one
> option and another group of classes for another option you can combine
> the general class by any class from the first group and by any class
> from the second group. Question is how can functions of one group
> refer to functions of another?
> Thank you for answers.
> Sergey


You can give them a common base class and move the virtual function to it:

#include <iostream>
using namespace std;

class Base
{
public:
virtual void bf () = 0;
};


class a1 : virtual public Base
{
public:
void af () { bf(); }
};

class b1 : virtual public Base
{
public:
virtual void bf ()
{
cout << "This is the b1 override of bf\n";
}
};

class c1 : public a1, public b1 { };

int main ()
{
c1 x;
x.af();
}


--
John Carson
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Need clarification for virtual method and pure virtual function a C++ 7 06-28-2007 12:38 PM
virtual vs pure virtual member function sam_cit@yahoo.co.in C++ 7 05-02-2007 10:00 AM
private virtual functions and pure virtual functions with bodies John Goche C++ 10 12-08-2006 04:00 PM
Pure functions still pure after definition Todd Aspeotis C++ 3 05-30-2005 03:53 AM
virtual function and pure virtual function in the implementation of COM IK C++ 2 07-23-2004 02:55 PM



Advertisments