Форум программистов, компьютерный форум CyberForum.ru

Добавление нового метода в класс - C++

Восстановить пароль Регистрация
 
Fostercare
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
08.06.2014, 14:18     Добавление нового метода в класс #1
Всем доброго времени суток. Редко обращаюсь за помощью, но тут мне без неё не обойтись. И сразу к сути. Наша программа состоит из отдельного исходного файла complex3.cpp и основного main.cpp.
Непосредственно сам complex3:
complex3.h (Заголовочный файл):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef COMPLEX3_H
#define COMPLEX3_H
 
class complex3
{
private:
    double re;
    double im;
    double re1;
    double im1;
public:
    complex3();
    complex3(double, double);
    void add(complex3);
    void sub(complex3);
    void print();
};
 
#endif // COMPLEX3_H
complex3.cpp (исходник):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "complex3.h"
#include <iostream>
 
using namespace std;
 
complex3::complex3()
{
re = im = 0;
}
 
complex3::complex3(double r, double i = 0)
{
  re = r;
  im = i;
}
 
void complex3::add(complex3 c)
{
  re += c.re;
  im += c.im;
}
 
void complex3::sub(complex3 c)
{
  re -= c.re;
  im -= c.im;
}
 
void complex3::print()
{
  cout << endl << "Znachenie kompleksnogo chisla: " << re;
  if (im < 0)
    cout << im << 'i';
  else
    if (im > 0) cout << '+' << im << 'i';
}
Для пояснения, этот класс содержит в себе методы для работы с комплексными числами(числами вида "X+Yi") - сложение, вычитание, вывод на экран.
Работа с его элементами выглядела бы, как пример, следующим образом:
C++
1
2
3
complex3 c1(x, y), c2(x1,y1);
c1.add(c2);
c1.print();
,
где x,y,x1,y1 - любые числа.

Далее, исходник main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include "complex3.h"
 
using namespace std;
 
struct complex
{
    double re;
    double im;
    void add(complex c)
    {
        re = re + c.re;
        im = im + c.im;
    }
    void sub (complex c)
    {
        re -= c.re;
        im -= c.im;
    }
};
 
 
int main()
{
 
    return 0;
}
Полная аналогия. Позволяет работать с такими же методами для комплексных чисел.
Пример использования этой структуры:
C++
1
2
3
4
5
6
complex c1,c2;
c1.re = x;
c1.im = y;
c2.re = x1;
c2.im = y2;
c1.add(c2);
И наконец - что же требуется изменить: добавить в класс complex3 метод add1, складывающий значение
комплексного числа с числом типа complex.
.

Как я понял, complex3 работает только с типами своего класса, по аналогии же работает структура complex.
Я попробовал некоторые варианты их взаимодействия - ничего не вышло...
Помогите пожалуйста решить эту проблему, буду невероятно благодарен.
И извините за корявое объяснение, если оно таковым является.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
azbest
 Аватар для azbest
36 / 36 / 7
Регистрация: 12.03.2013
Сообщений: 141
08.06.2014, 14:38     Добавление нового метода в класс #2
Не совсем понял что нужно))

Если нужно добавить метод чтоб записать сумму двух чисел, то
C++
1
2
3
4
5
6
7
8
9
public:
...........
void add1(complex3&, complex3&);
 
//реализация
void complex3::add1(complex3& a, complex3& b) {
    re=a.re+b.re;
    im=a.im+b.im;
};
2) метод который возвращает комплексное число
C++
1
2
3
4
5
6
7
8
9
10
11
12
public:
...........
complex add1(complex&);
 
//реализация
complex complex3::add1(complex& b) {
    return complex3(re+b.re,im+b.im);
};
//вызов
complex3 a,b,c;
.....
c=a.add1(b);  / / в с попадет сумма а и b
но лучше перегрузить операторы, и добавить методы
C++
1
2
3
public:
double getIm();
double getRe();
Fostercare
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
08.06.2014, 14:46  [ТС]     Добавление нового метода в класс #3
Проблема в том, что я тоже ответ ваш не совсем понял.. Что должно быть:
C++
1
2
3
4
5
6
7
8
int main()
{
   complex c1;
   c1.re = 5;
   c1.im = 4;
   complex3 c2(10, 5);
   c2.add1(c1);     // Но так просто ничего не работает..
}
azbest
 Аватар для azbest
36 / 36 / 7
Регистрация: 12.03.2013
Сообщений: 141
08.06.2014, 15:11     Добавление нового метода в класс #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Заголовочный файл

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#ifndef COMPLEX_H_INCLUDED
#define COMPLEX_H_INCLUDED
 
#include <stdio.h>
 
class Complex {
private:
    double re, im;
public:
    Complex();
    Complex(double, double);
    double getRe();
    double getIm();
    void add(Complex&);
    void print();
};
 
Complex::Complex() {
    re=0;
    im=0;
}
 
Complex::Complex(double x, double y) {
    re=x;
    im=y;
}
 
double Complex::getRe() {
    return re;
}
 
double Complex::getIm() {
    return im;
}
 
void Complex::add(Complex& c) {
    this->re+=c.getRe();
    this->im+=c.getIm();
}
 
void Complex::print() {
    printf("(%lf,%lf)\n",this->getRe(),this->getIm());
}
#endif // COMPLEX_H_INCLUDED

мейн
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include "complex.h"
using namespace std;
 
int main()
{
    Complex x(2,3), y(4,6);
    x.add(y);
    x.print();
    return 0;
}
Fostercare
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
08.06.2014, 15:14  [ТС]     Добавление нового метода в класс #5
Спасибо
Yandex
Объявления
08.06.2014, 15:14     Добавление нового метода в класс
Ответ Создать тему
Опции темы

Текущее время: 02:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru