Cześć, próbuję przeciążyć operatory +, - i * tak by działały operując na obiektach.
Zrobiłem póki co dwa z nich: + i =. Operator = działa prawidłowo, natomiast mam problem z wywołaniem instrukcji A = B+C. O ile na instrukcji A=B wszystko jest ok, o tyle na A=B+C wyrzuca mi błąd:
no match for 'operator=' (operand types are 'CTable' and 'CTable')
candidate is
CTable& CTable::operator=(CTable&)|
no known conversion for argument 1 from 'CTable' to 'CTable&'|
Chciałbym dodać, iż takie działanie zaobserwowane jest w próbie odpalenia kodu w Code Blocksie, w Visualu wszystko kompiluje się i działa bez zająknięcia. Wie ktoś może jak rozwiązać ten błąd? Ściągnąć jakąś nowszą wersję kompilatora? Jeśli tak to jaką?
kod:
CTable& CTable::operator=(CTable &b)
{
if (lengthArray != b.lengthArray)
{
changeLengthArray(b.lengthArray);
}
for (int i=0; i< lengthArray; i++)
{
pointer[i] = b.pointer[i];
}
s_name = b.s_name;
return *this;
}
CTable CTable::operator+(CTable &c)
{
CTable a = *this;
a.vSetName(a.getS_Name() + "+" + c.getS_Name());
int i = a.getLengthArray();
a.changeLengthArray(a.getLengthArray()+c.getLengthArray());
for (int j=0; j<c.getLengthArray(); j++)
{
a.setValueToArray(i, c.getPointer(j));
i++;
}
return c;
}