Original Post
Hi, I'm writing a matrix class for practice purposes. Can I pass fundamental type operators such as +=, -=, *= as parameters? Can I do this? (have one function that applies the relevant operator to all the members) or do I have to do this? (define each operator to be applied to each member) Cheers.
class Moo
{
private:
int x;
int y;
int z;
int w;
// ...
Moo& assignAndOperate(int&,int&(*)(int&));
public:
Moo& operator+=(int& i) { return assignAndOperate(i, +=); }
Moo& operator-=(int& i) { return assignAndOperate(i, -=); }
Moo& operator*=(int& i) { return assignAndOperate(i, *=); }
Moo& operator/=(int& i) { return assignAndOperate(i, /=); }
};
Moo& Moo::assignAndOperate(int& i,int&(*oper)(int&))
{
oper(x,i);
oper(y,i);
oper(z,i);
oper(w,i);
// ...
return *this;
}
class Moo
{
private:
int x;
int y;
int z;
int w;
// ...
public:
Moo& operator+=(int& i);
Moo& operator-=(int& i);
Moo& operator*=(int& i);
Moo& operator/=(int& i);
};
Moo& Moo::operator+=(int& i)
{
x+=i;
y+=i;
z+=i;
w+=i;
// ...
return *this;
}
Moo& Moo::operator-=(int& i)
{
x-=i;
y-=i;
z-=i;
w-=i;
// ...
return *this;
}
Moo& Moo::operator*=(int& i)
{
x*=i;
y*=i;
z*=i;
w*=i;
// ...
return *this;
}
Moo& Moo::operator/=(int& i)
{
x/=i;
y/=i;
z/=i;
w/=i;
// ...
return *this;
}