M
Mark Foley
I am implementing some functionality where there is a single
base class 'A' which provides some common functionality
There are then two classes derived from 'A', call them 'B' and 'C'.
Both 'B' and 'C' define functions specific only to their class. Somethng
like...
class A
{
void doX();
void doY();
}
class B : class A
{
void getInfo();
char * getBInfo();
}
class C : class A
{
void getInfo();
char * getCInfo();
}
I then have a list of objects. Some are based on 'B', some are based
on 'C', but I would like to treat them generically.
ob[0]->type.doX(); // always ok
ob[0]->type.getInfo(); // always ok
ob[0]->type.getCInfo(); // only ok if type is Class C
I know if I make getBInfo() virtual in the base class then I can
make the above call regardless. But then I have to provide some
return value for it in class A.
If I make it a pure virtual, then I need to provide an implementation
for it in the derived class.
Is there a way to treat a list of objects like this generically without
having to know their
actual type?
It seems kludgey to have something like:
virtual char * getBInfo() {return NULL};
in my base class, but perhaps that's the way it's done.
Thanks
Mark
base class 'A' which provides some common functionality
There are then two classes derived from 'A', call them 'B' and 'C'.
Both 'B' and 'C' define functions specific only to their class. Somethng
like...
class A
{
void doX();
void doY();
}
class B : class A
{
void getInfo();
char * getBInfo();
}
class C : class A
{
void getInfo();
char * getCInfo();
}
I then have a list of objects. Some are based on 'B', some are based
on 'C', but I would like to treat them generically.
ob[0]->type.doX(); // always ok
ob[0]->type.getInfo(); // always ok
ob[0]->type.getCInfo(); // only ok if type is Class C
I know if I make getBInfo() virtual in the base class then I can
make the above call regardless. But then I have to provide some
return value for it in class A.
If I make it a pure virtual, then I need to provide an implementation
for it in the derived class.
Is there a way to treat a list of objects like this generically without
having to know their
actual type?
It seems kludgey to have something like:
virtual char * getBInfo() {return NULL};
in my base class, but perhaps that's the way it's done.
Thanks
Mark