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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
morgan4ik
3 / 3 / 0
Регистрация: 04.12.2009
Сообщений: 43
02.06.2011, 23:34     ООП виртуальные функции #1
ЗАДАНИЕ:

Создать абстрактный базовый класс 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)
{

}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2011, 23:34     ООП виртуальные функции
Посмотрите здесь:

C++ Виртуальные функции
Виртуальные функции. C++
Виртуальные функции C++
C++ виртуальные и чисто виртуальные функции
C++ виртуальные функции С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
02.06.2011, 23:38     ООП виртуальные функции #2
точку с запятой после определения класса
morgan4ik
3 / 3 / 0
Регистрация: 04.12.2009
Сообщений: 43
03.06.2011, 00:01  [ТС]     ООП виртуальные функции #3
с точкой запятой та же сама ошибка
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
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;
}
Yandex
Объявления
03.06.2011, 01:18     ООП виртуальные функции
Ответ Создать тему
Опции темы

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