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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
morgan4ik
3 / 3 / 0
Регистрация: 04.12.2009
Сообщений: 43
#1

ООП виртуальные функции - C++

02.06.2011, 23:34. Просмотров 1922. Ответов 3
Метки нет (Все метки)

ЗАДАНИЕ:

Создать абстрактный базовый класс Pair с виртуальными арифметическими операциями. Создать производные классы Money и Complex.
Класс Money для работы с денежными суммами. Число должно быть представлено двумя полями: типа long для рублей и типа unsigned char — для копеек. Реализовать сложение, вычитание, умножение на дробное число.
Комплексное число представляются парой действительных чисел (а, b), где а — действительная часть, b — мнимая часть. Арифметические операции класса Complex:
• сложение (а, b) + (с, d) = (а + b, с + d);
• вычитание (а, b) - (с, d) = (а - b, с - d);
• умножение (a, b) * (с, d) = (ас - bd, ad + bс);
• деление (а, b) / (с, d) = (ас + bd, bс - ad) / (с2 + d2).


проблема в том что когда начинаешь в классе Complex писать void complex::add(complex obj) на слово complex выделяет и пишет такую строчку "complex is not allowed"

помогите пожалуйста кто знает!!!вот код!!!

#ifndef PAIR_H
#define PAIR_H
class pair
{
protected:
long double a;
public:
pair(long double);
virtual void add(complex)=0;
virtual void sub(pair)=0;
virtual void mul(pair)=0;
virtual void div(pair)=0;
virtual void read()=0;
virtual void display()=0;
}
#endif

#include <iostream>
#include "pair.h"
//using namespace std;

pair::pair(long double al)
{
std::cout<<"vuzvan konstr class PAIR"<<std::endl;
a=al;
}

#ifndef COMPLEX_H
#define COMPLEX_H
#include "pair.h"
class complex:public pair
{
private:
long double b;
public:
complex(long double,long double);
void add(complex);
void sub(complex);
void mul(complex);
void div(complex);
void read();
void display();
}
#endif

#include <iostream>
#include "complex.h"
#include "pair.h"
using namespace std;

complex::complex(long double al,long double bl):pair(al)
{
b=bl;
}

void complex::read()
{
cin>>a;
cin>>b;
}

void complex::display()
{
cout<<"a="<<a<<" b="<<b<<endl;
}

void complex::add(complex obj)
{

}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2011, 23:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ООП виртуальные функции (C++):

виртуальные и чисто виртуальные функции - C++
Чем они отличаются?? если можно, с примерами. И как из виртуальной функции сделать чисто виртуальную? #include &lt;iostream&gt; using...

Виртуальные функции - C++
Если в базовом классе А есть виртуальная функция show() перегруженная, то есть имеется три разные версии этой функции. Есть класс Б...

виртуальные функции - C++
сделать какой либо из методов класса виртуальным #include&lt;iostream.h&gt; #include&lt;stdio.h&gt; class chislo { int a; public: ...

Виртуальные функции - C++
Подскажите пожалуйста, как передать переменную из одной виртуальной функции в другую. Вот код программы работает правильно, но в остальных...

виртуальные функции - C++
Всем привет, помогите с исправлением функции #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; enum...

Виртуальные функции - C++
Здрасте! вот задачка, какбэ сделал, но нужны виртуальные функции. даже не знаю как их сделать. #include &lt;iostream.h&gt; #include...

3
OstapBender
584 / 523 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
02.06.2011, 23:38 #2
точку с запятой после определения класса
1
morgan4ik
3 / 3 / 0
Регистрация: 04.12.2009
Сообщений: 43
03.06.2011, 00:01  [ТС] #3
с точкой запятой та же сама ошибка
0
ValeryLaptev
Эксперт С++
1042 / 821 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
03.06.2011, 01:18 #4
Цитата Сообщение от morgan4ik Посмотреть сообщение
с точкой запятой та же сама ошибка
А почему у тебя в классе Pair есть функция, работающая с complex?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class pair
{
protected:
long double a;
public:
pair(long double);
virtual void add(complex)=0;
virtual void sub(pair)=0;
virtual void mul(pair)=0;
virtual void div(pair)=0;
virtual void read()=0;
virtual void display()=0;
}
0
03.06.2011, 01:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2011, 01:18
Привет! Вот еще темы с ответами:

Виртуальные функции - C++
Разработать программу с использованием наследования классов, реализующую классы: Земноводное(ареал обитания)-&gt;Крокодил(род, длина, вес) ...

виртуальные функции - C++
Здравствуйте.Перечитал различные статьи,но не могу до конца вникнуть в смысл использования виртуальных функций.Для взаимного понимания...

виртуальные функции - C++
ввести виртуальную функцию class A { void init(); } classB:A { void init(); }

Виртуальные функции - C++
Пытаюсь понять что это такое но не понимаю. Может есть какие то болие понятные примеры , а то то что я смотрел не дало результата. ...


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

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

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