2015-11-14 3 views
0

Я сделал класс Valjak (Roller) и дал ему переменные h (высота) и r (радиус) и сделал функции для области (Oplosje) и объемом (Volumen).C++ Функция Перегрузка/С объектами

Я создал 2 объекта, и теперь мне нужно перегрузить оператор + таким образом, чтобы результат добавления двух объектов из класса Valjak (ролик) создавал новый третий объект с высотой, равной высоте первого объекта плюс высота второго объекта, а радиус - радиус первого объекта плюс радиус третьего объекта.

Это мой код до сих пор:

#include <iostream> 
#include <math.h> 
using namespace std; 

class Valjak{ 
private: float r, h; 
public: 
    Valjak(){ 
     r = 1; 
     h = 1; 
    } 
    Valjak(float rr, float hh){ 
     r = rr; 
     h = hh; 
    } 
    void Oplosje(){ 
     cout << "Oplosje valjka je: " << 2 * (pow(r, 2)*3.14) + 2 * r*h << endl; 
    } 
    void Volumen(){ 
     cout << "Volumen je: " << (pow(r, 2)*3.14) * h << endl; 
    } 
}; 

int main(){ 

    Valjak V1; 
    Valjak V2(5, 10); 
    cout << "Vrijednosti prvog objekta!" << endl; 
    V1.Oplosje(); 
    V1.Volumen(); 
    cout << "Vrijednosti drugog objekta" << endl; 
    V2.Oplosje(); 
    V2.Volumen(); 

    system("PAUSE"); 
    return 0; 
} 
+0

Итак, что вы пробовали? Я не вижу попыток перегрузки 'operator +'. Однако вы должны использовать списки инициализаторов для инициализации полей элементов в организаторах. – Jack

+0

Хмм я ничего не пробовал, потому что я не могу с ним поработать и не вижу смысла использовать его сейчас как новичок –

ответ

0

Во-первых, вы должны написать добытчиками для r и h, давайте назовем их get_r и get_h:

class Valjak { 
// ... 
public: 
    float get_r() { return r; } 
    float get_h() { return h; } 
// ... 
} 

Затем перегрузить оператор + для двух объектов от Valjak класс:

Valjak operator+(const Valjak & a, const Valjak & b) 
{ 
    return Valjak(a.get_r() + b.get_r(), a.get_h() + b.get_h()); 
} 
+0

Спасибо, что ты полон мудрости :) –

+0

@Yelyah Теперь отметим это как ответ :) – vladon

Смежные вопросы