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

Наследование классов. Конфликт методов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Элементы заданного массива T(k) расположить в обратном порядке: t k,t k-1,.,t2,t1 http://www.cyberforum.ru/cpp-beginners/thread743888.html
Элементы заданного массива T(k) расположить в обратном порядке: t k,t k-1,...,t2,t1. Пожалуйста помогите мне, я начинающий мне срочно нужна помощь по этой задаче
C++ указатель на неопределенный тип Можете привести пример простой программы с этим указателем void* p; Я что-то не могу придумать с ним можно сделать.. http://www.cyberforum.ru/cpp-beginners/thread743882.html
C++ Дан файл, содержащий текст, записанный
Через с++ нужно сделать такую вот фиговинку : Дан файл, содержащий текст, записанный строчными буквами. Получить в другом файле тот же текст, записанный заглавными буквами.(Чтото на подобии создать программу которая будет иметь связь с блокнотом)
Матрицы. Найти A^-1 C++
помогите пожалуйста ) задание: Задано матрицу А как найти A^-1
C++ Что такое магазин? http://www.cyberforum.ru/cpp-beginners/thread743857.html
Подскажите что такое магазин? Как я понял - это что-то типо стека?
C++ Составить функцию (получить информацию о клиентах, которым могут быть предоставлены определенные скидки) Таки я сделал ввод в файл. Но не в текстовый, а в .dat. Главное было вывести все это дело на экран. Теперь мне нужно двигаться дальше. Задача состоит в том, что нужно получить информацию о клиентах, которым могут быть предоставлены определенные скидки, если сумма их предыдущих поездок варьируется в определенных значениях. И нужно составить функцию, которая бы могла это выполнять, для этой... подробнее

Показать сообщение отдельно
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94

Наследование классов. Конфликт методов - C++

23.12.2012, 23:56. Просмотров 533. Ответов 6
Метки (Все метки)

Здравствуйте! Проблема следующая. Написал операции постфиксной и префиксной декрементации и инкрементации счетчика, который находится в базовом классе. Почему то возникает конфликт ( хотя компилятор об этом не сообщает ), с такими методами как Counter operator++ ( ) и CounPf operator++ ( int ). Если убрать метод CounPf operator++ ( int ), то можно будет инкрементировать объект класса CounPf префиксным методом Counter operator++ ( ). Идентичная ситуация возникает с префиксной и постфиксной операцией декрементации. Помогите пожалуйста решить эту проблемму. Вот код моей прогаммы. При попытке инкрементировать или декрементировать объект префиксной операцией выдает "illegal structure operation".
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
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
//////////////////////////////////////////////
class Counter
{
 protected:
  unsigned int count;
 public:
  Counter ( ) : count ( )
  { }
  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 ); }
};
/////////////////////////////////////////////////
class CounPf : public CountDn
{
 public:
  CounPf ( ) : CountDn ( )
  { }
  CounPf ( int c ) : CountDn ( c )
  { }
  CounPf operator++ ( int )
  { return CounPf ( count++ ); }
  CounPf operator-- ( int )
  { return CounPf ( count-- ); }
};
/////////////////////////////////////////////////
int main ( )
{
 CounPf c1 = 90;
 --c1;
 cout << " Object c1 = " << c1.get_count() << endl;
 
 system ("PAUSE");
 return 0;
}
И в то же время, если я не использую наследование вовсе. Никаких амбивалентностей между методами не наблюдается, хотя по сути методы одни и те же:
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
#include <iostream>
using namespace std;
//////////////////////////////////////////////
class Counter
{
 protected:
  unsigned int count;
 public:
  Counter ( ) : count ( )
  { }
  Counter ( int c ) : count ( c )
  { }
  unsigned int get_count ( ) const
  { return count; }
  Counter operator++ ( )
  { return Counter ( ++count ); }
  Counter operator++ ( int )
  { return Counter ( count++ ); }
  Counter operator-- ( int )
  { return Counter ( count-- ); }
    Counter operator-- ( )
  { return Counter ( --count ); }
};
 
/////////////////////////////////////////////////
int main ( )
{
 Counter c1 = 90;
 c1--;
 cout << " Object c1 = : " << c1.get_count()<< endl;
 
 system ("PAUSE");
 return 0;
}
Знающие люди! Помогите пожалуйстааааа!

Добавлено через 20 минут
c меня + и печенька!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru