mana@primerd.Prime.COM (Mana Sherman) (04/10/91)
Here is some pseudo code from a school project I am working on. This
problem took my team
members and me a while to work around but we really want to be able to
do this...
class object {
public:
virtual void set() =0;
virtual void display() =0;
};
class text_obj : public object {
public:
void set(char* string[], int x, int y)
{ ........ }
void display();
{ .... }
};
class graph_obj : public object {
public:
void set(int size, int x, int y)
{ ...... }
void display();
{ .... }
};
class square_obj : public graph_obj {
public:
void display();
{ .... }
};
class triangle_obj : public graph_obj {
public:
void display();
{ .... }
};
main ()
{ Object* obj_array[10];
obj_array[1] = new square_obj;
obj_array[2] = new triangle_obj;
obj_array[3] = new text_object;
/* up to this point all should be well "Polymorphism" */
(*obj_array[1]).set(1,3,5);
(*obj_array[2]).set(3,5,9);
/* the above works only if the set method in the class object has the
same
argument list as the descendant class methods. So I get an error at
compile
time and can not do the ff. */
(*obj_array[3]).set("hi there",5,1);
/* yes the compile time error is due to the different footprint of the
set
methods. The following works - resolves correctly. */
for (int i = 1, i < 4, i++)
(*obj_array[i]).display();
};
I need to have the two different types of set methods and I need to
use
polymorphism -- Net_landers how can I make it so?
thanks for any and all responses.
Mana-K. Sherman
mana@s35.prime.com