Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 04.12.2009
Сообщений: 43
1

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

02.06.2011, 23:34. Показов 3057. Ответов 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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2011, 23:34
Ответы с готовыми решениями:

Ошибка, виртуальные функции, ООП
Вот код, ошибка на 79 строке когда нужно вывести имя, пишет что указатель не туда указывает //...

Виртуальные и чисто виртуальные функции
Чем они отличаются?? если можно, с примерами. И как из виртуальной функции сделать чисто...

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

виртуальные функции
Добрый день. Начал изучать виртуальные функции и столкнулся с проблемой. Не могу перегрузить...

3
592 / 530 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
02.06.2011, 23:38 2
точку с запятой после определения класса
1
3 / 3 / 0
Регистрация: 04.12.2009
Сообщений: 43
03.06.2011, 00:01  [ТС] 3
с точкой запятой та же сама ошибка
0
Эксперт С++
1066 / 845 / 60
Регистрация: 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2011, 01:18

Виртуальные функции
Здравствуйте,уважаемые посетители форума.Пишу программу созданию фигур и их перемещению на экране...

Виртуальные функции
Какие происходят изменения, когда в классе объявляем одну или несколько функций виртуальными? ...

Виртуальные функции
Объясните строку 106 И еще, почему перед каждой x1 x2 y стоит звездочка. Я вроде понимаю что это...

Виртуальные функции
На основе базового класса Страна (3 поля) создать дочерние классы Республика и Монархия(по 2 поля)....

виртуальные функции
Помогите пожалуйста, создать абстрактный класс Shape с двумя чисто виртуальными методами Area() и...

Виртуальные функции
Объясните пожалуйста зачем нужны чисто виртуальные функции?


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

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

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