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

Наследование - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переделать из С++ в С http://www.cyberforum.ru/cpp-beginners/thread234565.html
Слушайте ребята как мне можно переделать эту задачу из C++ в обычную СИшку? #include <vcl.h> #pragma hdrstop #include "UnitA.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;
C++ Visual и RAD studio здравие желаю. на один и тот же код: main() { string a; cout<<a; } RAD Studio выдает ошибку ('operator<<' not implemented in type 'ostream' for arguments of type 'string'), а VS работает нормально. помогите решить проблему,а то в раде работать привычнее. http://www.cyberforum.ru/cpp-beginners/thread234556.html
C++ Маленький вопрос по работе с файлами
очень глупый к тому же) есть FILE * f=fopen(filename,"r"); FILE* F; как мне присвоить*F=*f? заранее спасибо)
Есть ли в с++ какой-нибудь аналог in C++
Есть ли в с++ какой-нибудь аналог in К примеру в вот такая задача Подсчитать количество гласных символов в тексте в паскале все запишется красиво: const glasn=; var st: string; g,i:integer; begin if st in glasn then inc(g)
C++ switch i case http://www.cyberforum.ru/cpp-beginners/thread234532.html
v 4jom u menja o6ibka? i kak vivisti rezultat? # include <iostream> # include <conio.h> using namespace std; int main () char (znak); int x,y,z;
C++ c++, работа с windows Здраствуйте дорогие форумчанины!!! Возник вот такой любопытный вопрос Как на с++ можно реализовать проверку пользователя системы на наличие простого пароля? Как я понимаю, простой пороль это комбинация из цифр не очень большой длины... Не могли бы вы мне подсказать?? Заранее спасибо.... подробнее

Показать сообщение отдельно
half-node
21 / 18 / 3
Регистрация: 12.08.2010
Сообщений: 206

Наследование - C++

27.01.2011, 01:14. Просмотров 585. Ответов 6
Метки (Все метки)

Привет!
Есть следующая ситуация:
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
class Counter
{
protected:
    unsigned int count;
public:
    Counter(): count(0)
    {}
    Counter (int c): count(c)
    {}
    unsigned int get_count() const
    {return count;}
    Counter operator++ ()
    {return Counter(++count);}
};
 
class CountDn : public Counter
{
public:
    CountDn() : Counter()
    {}
    CountDn(int c) : Counter(c)
    {}
    CountDn operator--()
    {return CountDn(--count);}
};
Нужно используя наследование добавить возможность префиксного инкремента и декремента.
Читая тему наследования получаю: Созданный класс берет все возможности родительского класса, и дополнительно может заиметь свои. Ок. Создаю класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class CountM : public CountDn
{
public:
    CountM():CountDn()
    {}
    CountM(int c):CountDn(c)
    {}
    CountM operator++(int)
    {return CountM(count++);}
    CountM operator--(int)
    {return CountM(count--);}
};
При таком подходе, постфиксные операции работают, а вот на попытку префиксных выдает следующее:
error C2675: унарный "--": "CountM" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Если сделать наследование от класса Counter, естественно, мне будет недоступен префиксный инкремент "--".
Раз так, думаю я, стало быть, нужно использовать множественное наследование.
Сказано - сделано:
C++
1
2
3
4
5
6
7
8
9
10
11
12
class CountM : public Counter, public CountDn
{
public:
    CountM () : CountDn() //конструктор от этого класса, т.к. по идее, он все-равно доберется до класса Counter
    {}
    CountM(int g) : CountDn (g)
    {}
    CountM operator++(int)
    {return CountM(count++);}  
    CountM operator--(int)
    {return CountM(count--);}
};
В общем, он ругается на то, что Counter::count не является однозначным.
Если прописать CountDn::count++ и т.д., вроде бы все проходит, но созданные объекты CountM работают только на постфиксные операции. Если попытаться выполнить префиксную, выдаст ошибку:
унарный "++": "CountM" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Я уже вконец запутался. Помогите понять, пожалуйста, что я сделал и делаю не так?
п.с. вариантов конструкторов, наследования и проч проч "наслепую" делал много. Ни один не захотел работать.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru