Hi,
i am experimenting with overloading the < operator (i'll add the > later) as a means for checking if one of the goldfish (please see code below) is within the territory of another (the territories can overlap). im getting multiple compile errors with teh code - primarily to do with being able to access the private variables, even though i've made the overloaded operator a friend function for both of them.
am i doing the syntax wrong perhaps?
/* fish program:
each fish will start out with a static size and a territory.
they may attack each other, in which case the outcomes with depend on
1) their location (ie. if the attacking fish is on the territory of another goldfish
2) the relative size of the two fish
depending on the outcome of the attack - the fish may retreat or triumph.
triumph will increase its territory.
*/
#include <iostream>
using namespace std;
class point {
private:
float x;
float y;
public:
point(float x_in, float y_in) { //the 2 arg constructor
x = x_in;
y = y_in;
}
friend bool operator< ( const point &point_a, const territory &the_territory);
};
class territory {
private:
point ne, sw;
public:
territory(float x_ne, float y_ne, float x_sw, float y_sw)
: ne(x_ne, y_ne), sw(x_sw,y_sw) {
cout << ne.x << " and " << ne.y <<endl; //debug
}
friend bool operator< ( const point &point_a, const territory &the_territory) {
if((point_a.x < the_territory.ne.x && point_a.x > the_territory.ne.x) &&
(point_a.y < the_territory.ne.y && point_a.y > the_territory.ne.y))
return true;
}
};
class goldfish {
private:
float size;
point pos;
territory terr;
public:
goldfish(float x, float y) : pos(x,y), terr(x-1,y-1,x+1,y+1) { //constructor
size = 2.3;
}
void retreat() { //what happens in the case of loss in attack
}
void triumph() {
}
void attack() {
}
};
int main() {
goldfish adam(1,1); // fish1
goldfish eve(1.2,1.2); // fish2
}