[comp.lang.c++] char, int, float array object operations

ycy@walt.cc.utexas.edu (Joseph Yip) (11/13/89)

I am trying to write some C++ routines to handle array operations.
For example, A = B + C       adds arrays B and C and assigned to A.
The declaration may be :

class Array_char {
public:
	Array_char(int r, int c);
	Array_char& operator+(Array_char&);	// addition
	Array_char& operator*(Array_char&);	// multi.
	Array_char& operator=(Array_char&);	// assignment
	...
private:
	char *p;	// char array (1D or 2D)
	int row,col;
};

My C++ routines should be able to handle integer and floating arithematics.

To allow, say floating point, an other kind of data type operation, do I
have to declare a class? i.e.
	class Array_float {
		...
		Array_float& operator+(Array_float&);	// addition
		...
	private:
		float *p;		// pointer to float array
		int row,col;
	};

The operation on char array is the same as those on float or integer 
array. Is there any way to use code that is written for char? I was
thinking about derivation and void pointer. I may be able to make a
base class that contains all the array operations and defines 
Array_char, Array_int, and Array_float clases to inherit the base class.
This requires that the array pointer in the base class needs to 
be defined as void*. Because of void*, I need to declare some virtual
functions. It is because we cannot work with void*. To use void*, we
need to explicitly cast it to some type. So, to add two characters values,
we need,
	virtual void* add(void*, void*);

Also, one may need to do, A = B + C, where B is a character array and C
is a floating array and A is a character array.

This means we need to do user-defined conversion! What a mess!

Any advice or insights on doing these kind of object-oriented programming?

Joseph