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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fostercare
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
#1

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

08.06.2014, 14:18. Просмотров 488. Ответов 4
Метки нет (Все метки)

Всем доброго времени суток. Редко обращаюсь за помощью, но тут мне без неё не обойтись. И сразу к сути. Наша программа состоит из отдельного исходного файла 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.
Я попробовал некоторые варианты их взаимодействия - ничего не вышло...
Помогите пожалуйста решить эту проблему, буду невероятно благодарен.
И извините за корявое объяснение, если оно таковым является.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 14:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавление нового метода в класс (C++):

Добавление нового указателя в конец массива указателей, удаление указанного элемента, добавление указателей - C++
Здравствуйте. Помогите, пожалуйста, разобраться с одним большим заданием. Задание пока в процессе написания, но уже наверное есть ошибки....

Добавление нового элемента в список - C++
Добавить новый элемент в список после максимального ключа. У меня возникла проблема. Я не могу сдвинуть элемент. Например задаю 23 29...

Добавление в список нового элемента - C++
Всем доброе время суток. Мне нужна помощь, есть задание: нужно добавить в список новый элемент, после элемента, совпадающего с ключем x,...

C++ Добавление нового элемента в массив объектов - C++
Ошибка заключается в том что, после добавления нового элемента в массив groupArray через функцию Add, если попытаться вывести их происходит...

Добавление нового элемента в VS Express 2013 - C++
Здравствуйте. Никак не могу добавить .cpp в проект, я хочу создать консольное приложение...

Добавление нового элемента в бинарное дерево поиска с вспомогательной функцией(без рекурсии) - C++
с реализацией этой функции с рекурсией проблем нету.но без нее уже по-сложнее(.есть функция иbool Add(int) определенная в классе Дерева,и в...

4
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
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();
0
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);     // Но так просто ничего не работает..
}
0
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
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;
}
1
Fostercare
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
08.06.2014, 15:14  [ТС] #5
Спасибо
0
08.06.2014, 15:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2014, 15:14
Привет! Вот еще темы с ответами:

вызов метода у указателя на указатель на класс - C++
Доброго времени суток! Простите за, возможно, глупый вопрос и/или его неточную формулировку, но вот что есть: class parent { ...

Класс как аргумент своего же метода - C++
В примере ниже происходит лишний (по замыслу не нужный) вызов деструктора. Вопрос в следующем: как в методе класса в качестве аргумента...

Сложности с переносом метода из класса в класс - C++
Не могу перенести метод класса из одного в другой template&lt; class T &gt; inline bool write_varibal(T var); template&lt; class T &gt; inline...

Специализация метода темплейтного класса вложенного в темплейтный класс - C++
Есть два темплейтных класса template &lt;bool T2&gt; class B { void b(); } template &lt;&gt; void B&lt;true&gt;::b() {}


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru