Witam,
mam problem z jednym operatorem. Reszta działa normalnie.
Klasa wygląda prosto:
//.h
class rwVect3 {
public:
float pt[3];
//[...]
float operator[]( const int& id){
return pt[id];
}
Gdy chce sie dostać do składowej przez abc[id]
VS 08 wywala mi
//dla
rwVect3 operator+(const rwVect3& v1, const rwVect3& v2) {
return rwVect3(v1[0] + v2[0], v1[1] + v2[1], v1[2] + v2[2]);// tu
}
//dostaje:
error C2678: binary '[' : no operator found which takes a left-hand operand of type 'const rwVect3' (or there is no acceptable conversion)
could be 'float rwVect3::operator [](const int &)'
1> while trying to match the argument list '(const rwVect3, int)'
Jak próbuje zadeklarować tak jak inne operatory na zewnątrz klasy:
friend float operator[]( const rwVect3& v,const int& id);
to dostaje:
error C2801: 'operator []' must be a non-static member
bo to specyficzny operator
Więc kompilator daje mi sugestie żeby użyć
could be 'float rwVect3::operator [](const int &)'
ale nie wiem jak wtedy odwołać się do przekazanego parametru int&...
Z góry dzięki za ewentualną pomoc.