Как объявить перегрузку оператора вне класса C++? Как объявить оператор сложения для двух класс, при условии, что сам оператор должен быть объявлен ВНЕ класса? Пробовал так, выдает ошибку о том, что не могу получить доступ к полям a и b. С this игрался долго, руки опускаются. class Zespolona { private: double a, b; public: int getA () { return a; } int getB () { return b; } int setA (int i) { a = i; } int setB (int i) { b = i; } Zespolona operator+(Zespolona q); Zespolona operator-(Zespolona q); }; Zespolona operator +(Zespolona q) { double aa = q.getA(); aa += a; double bb = q.getB(); bb += this->b; return q; } Zespolona operator -(Zespolona q) { double aa = q.getA(); aa -= this->a; double bb = q.getB(); bb -= this->b; return q; } Если что-то в вопросе непонятно, прошу уточнить. Сейчас живу в Польше, русский забываю уже. Dziękuję z góry :)
Чтобы объявить перегрузку оператора вне класса в C++, необходимо указать, что этот оператор является дружественной функцией класса. Для этого нужно использовать ключевое слово friend при объявлении функции вне класса.
Пример объявления оператора сложения для двух классов Zespolona вне класса:
В данном примере оператор + объявляется как дружественная функция класса Zespolona вне его определения. Теперь вы можете использовать этот оператор для сложения двух объектов класса Zespolona.
Чтобы объявить перегрузку оператора вне класса в C++, необходимо указать, что этот оператор является дружественной функцией класса. Для этого нужно использовать ключевое слово friend при объявлении функции вне класса.
Пример объявления оператора сложения для двух классов Zespolona вне класса:
#include <iostream>class Zespolona {
private:
double a, b;
public:
Zespolona(double a, double b) : a(a), b(b) {}
int getA() { return a; }
int getB() { return b; }
friend Zespolona operator+(const Zespolona& q1, const Zespolona& q2);
};
Zespolona operator+(const Zespolona& q1, const Zespolona& q2) {
double newA = q1.a + q2.a;
double newB = q1.b + q2.b;
return Zespolona(newA, newB);
}
int main() {
Zespolona z1(1, 2);
Zespolona z2(3, 4);
Zespolona z3 = z1 + z2;
std::cout << "Sum: " << z3.getA() << " + " << z3.getB() << "i" << std::endl;
return 0;
}
В данном примере оператор + объявляется как дружественная функция класса Zespolona вне его определения. Теперь вы можете использовать этот оператор для сложения двух объектов класса Zespolona.