Counter(): count(0) {}
Counter(int c): count(c) {}
int get_count() { return count; }
Counter operator++() { return Counter(++count); }
};
Потомок, версия 1:
class CountDn: public Counter
{
public:
Counter operator--() { return Counter(--count); }
};
Потомок, версия 2:
class CountDn: public Counter
{
public:
CountDn(): Counter() {}
CountDn(int c): Counter(c) {}
CountDn operator--() { return CountDn(--count); }
};
Скажите, пожалуйста. Почему в первой версии подкласса нельзя вернуть декремент класса CountDn? Ведь всё равно ведь используется конструктор общего класса?
Потому что конструкторы не наследуются
А компилятор разве не видит конструктор?
Причем здесь компилятор?
Это скомпилируется, в чём у тебя проблема? В том что не можешь написать CountDn(—count), если не определишь конструктор CountDn(int) ?
Я уже написал почему
Но ведь у тебя нет метода CountDn::CountDn(int), как ты хочешь его вызвать?
Оператор декремента должен возвращать объект, к которому он применялся. Вроде этого ожидают от него, а не новый объект.
Обсуждают сегодня