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

Сравнение класса наследника через конструктор с одним аргументом - C++

Восстановить пароль Регистрация
 
Spirit370
 Аватар для Spirit370
1 / 1 / 2
Регистрация: 08.08.2013
Сообщений: 86
23.08.2014, 01:06     Сравнение класса наследника через конструктор с одним аргументом #1
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
#include <iostream>
using namespace std;
////////////////////////////////
class Counter
{
protected:
    unsigned int count;
public:
    Counter () : count (0){}
    Counter ( int c ) : count(c){}
     unsigned int get_count () const
    {return count;}
    Counter operator++(int temp)
    {
        temp = count;
        count++;
        return temp;
    }
    inline Counter operator++()
    {
        return Counter ( ++count);
    }
};
class CountDn : public Counter
{
public:
    CountDn():Counter(){}
    CountDn(int c):Counter(c){}
    Counter operator-- ()
    {return Counter ( --count);}
    /*void operator=(Counter c1)
    {
        count = c1.get_count();
    }*/
};
void main()
{
    CountDn c2(5),c1;
    c1 = --c2;
    cout << c1.get_count() << endl;
    system("PAUSE");
}
Значит, в этом коде, когда я сравниваю
C++
1
2
CountDn c2(5),c1;
    c1 = --c2;
выдаёт ошибки, про не соответствие сравнение(это я вообщем). И пишет(в ошибках) , что "с2" это объект базового класса counter.

Так вот, я решил эту проблему, перегрузив оператор "=". Так вот, какие есть ещё способы сравнить эти два объекта. Или как объект с2 в сравнении сделать объектом производного класса?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2014, 01:06     Сравнение класса наследника через конструктор с одним аргументом
Посмотрите здесь:

Не работает конструктор наследника класса C++
Конструктор класса наследника C++
C++ Конструктор копирование у наследника
C++ Почему в списке инициализации конструктора дочернего класса нельзя вызывать конструктор родительского через его пространство имён?
Вызов конструктора базового класса из класса-наследника C++
C++ Сравнение двух объектов через конструктор с одним аргументом
Присвоение значения переменной класса через конструктор C++
Как передавать значения строкового типа в конструктор через объект класса? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6420 / 3794 / 877
Регистрация: 30.01.2014
Сообщений: 6,584
23.08.2014, 01:26     Сравнение класса наследника через конструктор с одним аргументом #2
Цитата Сообщение от Spirit370 Посмотреть сообщение
выдаёт ошибки
Оператор-- возвращает Counter, а для CountDn нет доступной операции присваивания CountDn <- Counter.
Ее надо определить,
C++
1
2
3
4
5
6
7
8
    CountDn & operator=(Counter const & x)
    {
        if(this != &x)
        {
            Counter::operator=(x);
        }
        return *this;
    }
либо изменить оператор--
C++
1
2
3
4
    CountDn operator--()
    {
        return CountDn(--count);
    }
Yandex
Объявления
23.08.2014, 01:26     Сравнение класса наследника через конструктор с одним аргументом
Ответ Создать тему
Опции темы

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