Форум программистов, компьютерный форум 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++ Работа с экраном в текстовом режиме Пожалуйста подскажите, как сделать вывод всех цветов фона, разделяя цвета паузой. Задание: Дополнить меню функциональной клавишей F6: вывод в окно 1 всех цветов фона, разделяя цвета паузой. На окно нанести рамку. Вот, что у меня только есть: #include <vcl.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <dos.h> #include <windows.h> http://www.cyberforum.ru/cpp-beginners/thread743887.html
C++ указатель на неопределенный тип
Можете привести пример простой программы с этим указателем void* p; Я что-то не могу придумать с ним можно сделать..
C++ Дан файл, содержащий текст, записанный
Через с++ нужно сделать такую вот фиговинку : Дан файл, содержащий текст, записанный строчными буквами. Получить в другом файле тот же текст, записанный заглавными буквами.(Чтото на подобии создать программу которая будет иметь связь с блокнотом)
C++ Матрицы. Найти A^-1 http://www.cyberforum.ru/cpp-beginners/thread743863.html
помогите пожалуйста ) задание: Задано матрицу А как найти A^-1
C++ Что такое магазин? Подскажите что такое магазин? Как я понял - это что-то типо стека? подробнее

Показать сообщение отдельно
fuzzytoozy
8 / 8 / 1
Регистрация: 23.11.2012
Сообщений: 94
23.12.2012, 23:56     Наследование классов. Конфликт методов
Здравствуйте! Проблема следующая. Написал операции постфиксной и префиксной декрементации и инкрементации счетчика, который находится в базовом классе. Почему то возникает конфликт ( хотя компилятор об этом не сообщает ), с такими методами как 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 меня + и печенька!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru