Topic: Pointer arguments for overloaded operators
Author: teague@laic.rdd.lmsc.lockheed.com (Alan Teague)
Date: 26 Mar 91 18:27:25 GMT Raw View
This is what I want to do:
class alpha {
...
// These are allowed and work with both g++ and ccxx:
friend alpha *operator+( alpha&, alpha& );
alpha *operator+( alpha& );
// This is what I really want to do:
friend alpha *operator+( alpha*, alpha* ); // Desired operation
// Not allowed by ARM: pg 330
// "An operator function must either be a member function or take
// at least one argument of a class or a reference to a class"
// The function I do not want to use, if possible, is:
alpha *alpha_append( alpha*, alpha* ); // Which works exactly the way I want.
// So I tried this:
alpha *operator+( alpha* ); // Compiles with no warnings or messages
// But when used, the use generates an error message:
// alpha *a = new alpha();
// alpha *b = new alpha();
// alpha *c = a + b; -- Error message about pointers
...
};
It seems to be perfectly reasonable to want to have the operator work on
pointers to class instances. Have I missed some subtle point which is not
discussed in the ARM commentary (or I haven't found yet)?
-- Alan Teague
teague@stc.lockheed.com