[c++] operator [] C2678

0

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.

0

jak to nie wiesz? Czy to nie oczywiste?
Dopisz sobie tylko identyfikator zmiennej.

0
MarekR22 napisał(a)

Dopisz sobie tylko identyfikator zmiennej.

w sensie tego co mam napisane już i nie działa(const int& id)?
:|

0

sorry nie doczytałem dokładnie komunikatu i pieprze głupoty.
Tobie po prostu brakuje const, a chcesz zastosować operator [] na stałym obiekcie!

float operator[]( const int& id) const {
                return pt[id];
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1