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

Сравнение наследников - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ среднеарифметическое а1, а2, а3 http://www.cyberforum.ru/cpp-beginners/thread89210.html
Привет народ! Очень нужна помощь!!! Даны действительные числа а1, а2, ... , аn. (а1>0). Вычислить до первого отрицательного числа: среднеарифметическое а1, а2, а3. :tender:
C++ Даны целые числа а1, а2, ... , аn Добрый вечер добрые люди. Мне очень нужна ваша помощь. Большое спасибо. Вот задачи: 1. Найти все натуральные числа, не превосходящие N<1000,и делящиеся на каждую из своих цифр. 2. Даны целые числа а1, а2, ... , аn (среди них могут быть повторяющиеся). Получить все числа, входящие в последовательность по одному разу 3. Даны целые числа а1, а2, ... , аn (среди них могут быть повторяющиеся).... http://www.cyberforum.ru/cpp-beginners/thread89208.html
C++ & удаление столбца
Здрасти, я все со своими массивами. У меня есть двумерный динамический массив Matrix 6*4. Удаление последнего столбца надо так делать?: delete Matrix;
Разложение в ряд. C++
Нужна помощь.Вычисление логарифма по основанию два вещественного числа...дан ряд n(x+1)=x-x^2/2+x^3/3-.....x^n/n - разложение натурального логарифма в ряд....потом из свойства логарифмов log2(N)=ln(n)/ln(2),помогите а то отчисляют......
C++ вывести Наименьшее количество элементов, которое нужно удалить, чтоб осталась возрастающая последовательность http://www.cyberforum.ru/cpp-beginners/thread89171.html
Нужно в массиве вывести Наименьшее количество элементов, которое нужно удалить, чтоб осталась возрастающая последовательность
C++ Динамическое распределение памяти Добрый вечер, помогите пожалуйста разобраться с задачкой!!! Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера nxn??? Буду рад любой помощи!!! подробнее

Показать сообщение отдельно
togramago
9 / 9 / 0
Регистрация: 03.11.2009
Сообщений: 39
24.01.2010, 21:12  [ТС]     Сравнение наследников
Спасибо!

Но дело в том что у меня два наследника от одной базы (1)
и да, база действительно абстрактная. (2)

вот, собсно, код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Ware
{
    char * name;
    double price;
public:
//....
    virtual double getAdd() const = 0; 
    
    const Ware & getWare() const;
 
    Ware & operator=(const Ware & w);
    
    virtual void show() const;
    virtual void show(std::ostream & os) const = 0
 
    virtual bool operator==(const Ware & w);
    virtual bool operator!=(const Ware & w);
    virtual bool operator>(const Ware & w);
    virtual bool operator<(const Ware & w);
    virtual bool operator>=(const Ware & w);
    virtual bool operator<=(const Ware & w);
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Item: public Ware
{
 
    Company producer;
    int a, b, c;
public:
    //...
    const Item & getItem() const;
 
    double getAdd() const;
 
    Item & operator=(const Item & i);
    void show() const;
    void show(std::ostream & os) const;
 
    bool operator==(const Item & i);
    bool operator!=(const Item & i);
    bool operator>=(const Item & i);
    bool operator<=(const Item & i);
    bool operator>(const Item & i);
    bool operator<(const Item & i);
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Service: public Ware
{
    Performer performer;
    int complicacy;
public:
    //...
 
    Service & operator=(const Service & s);
 
    const Service & getService() const;
 
    double getAdd() const;
    void show() const;
    void show(std::ostream & os) const;
    
    bool operator==(const Service & i);
    bool operator!=(const Service & i);
    bool operator>=(const Service & i);
    bool operator<=(const Service & i);
    bool operator>(const Service & i);
    bool operator<(const Service & i);
 
};
у меня операторы сравнения перегружены, но при работе с указателями это бессмысленно (сравнивает адреса), если разыменовывать, то сравнивает сами Ware - а они ведь могут быть одинаковыми для Item и Service.

В процессе исканий я думала использовать typeid вот так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool cmp(Ware * w1, Ware * w2)
{
    if (typeid(*w1) == typeid(*w2))
    {
        char * s = strdup(typeid(*w1).name());
        if (s[0] == 'S')
        {
            Service s1(w1->getName(), w1->getPrice(), w1->getPerformer(), w1->getComplicacy());
            Service s2(w2->getName(), w2->getPrice(), w2->getPerformer(), w2->getComplicacy());
            return s1 == s2;
        }
        else
        {
            Item i1(w1->getName(), w1->getPrice(), w1->getA(), w1->getB(), w1->getC());
            Item i2(w2->getName(), w2->getPrice(), w2->getA(), w2->getB(), w2->getC());
            return i1 == i2;
        }
    }
    return false;
}
но у вид у этой функции мне не нравится, какой-то он странный
+ компилятор говорит что у Ware * нету функций getPerformer() и тд
 
Текущее время: 01:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru