Witam mam pewien problem z konstruktorem, oto moja klasa:
class Wektor
{
float wek[2]; // przechowywanie współrzędnych wektora dlugosci
public:
Wektor operator + (Wektor);
float operator [ ] (unsigned int indeks) const; // przeciazenie operatorow []
float & operator [ ] (unsigned int indeks); // przeciazenie operatora+ dodaje do siebie dwa wektory
};
float Wektor::operator [ ] (unsigned int indeks) const
{
if(indeks<0 || indeks>=3)
return wek[0]; // sprawdza czy podane indeksy sa prawidlowe jesli nie zwraca wyraz[0] jesli tak wyraz[indeks]
return wek[indeks];
}
float & Wektor::operator [ ] (unsigned int indeks)
{
if(indeks<0 || indeks>=3)
return wek[0];
return wek[indeks];
}
Wektor Wektor::operator + (Wektor w1)
{
Wektor suma;
int i;
for (i=0;i<2;i++) suma[i]=(*this)[i]+w1[i];
return suma;
}
W tej postaci wszystko sie kompiluje. Potrzebuje wyzerowac na początku tablice wek gdyz jedna z wartosci ma byc =0, a nie zaszkodzi wyzerowac calej, tak wiec dodaje w czesci public moj konstruktor:
Wektor (float wek[2]){wek[0]=0;wek[1]=0;};
nie jestem pewien czy jest on poprawny, ale po jego dodaniu przy probie kompilacji otrzymuje komunikat:
C:\Users\Desktop\x.cpp In member function Wektor Wektor::operator+(Wektor)': 48 C:\Users\\Desktop\x.cpp no matching function for call to
Wektor::Wektor()'
note C:\Users\Desktop\x.cpp:11 candidates are: Wektor::Wektor(const Wektor&)
note C:\Users\Desktop\x.cpp:11 Wektor::Wektor(float*)