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

Сравнение наследников - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ среднеарифметическое а1, а2, а3 http://www.cyberforum.ru/cpp-beginners/thread89210.html
Привет народ! Очень нужна помощь!!! Даны действительные числа а1, а2, ... , аn. (а1>0). Вычислить до первого отрицательного числа: среднеарифметическое а1, а2, а3. :tender:
C++ Даны целые числа а1, а2, ... , аn Добрый вечер добрые люди. Мне очень нужна ваша помощь. Большое спасибо. Вот задачи: 1. Найти все натуральные числа, не превосходящие N<1000,и делящиеся на каждую из своих цифр. 2. Даны целые числа а1, а2, ... , аn (среди них могут быть повторяющиеся). Получить все числа, входящие в последовательность по одному разу 3. Даны целые числа а1, а2, ... , аn (среди них могут быть повторяющиеся).... http://www.cyberforum.ru/cpp-beginners/thread89208.html
C++ & удаление столбца
Здрасти, я все со своими массивами. У меня есть двумерный динамический массив Matrix 6*4. Удаление последнего столбца надо так делать?: delete Matrix;
Разложение в ряд. C++
Нужна помощь.Вычисление логарифма по основанию два вещественного числа...дан ряд n(x+1)=x-x^2/2+x^3/3-.....x^n/n - разложение натурального логарифма в ряд....потом из свойства логарифмов log2(N)=ln(n)/ln(2),помогите а то отчисляют......
C++ вывести Наименьшее количество элементов, которое нужно удалить, чтоб осталась возрастающая последовательность http://www.cyberforum.ru/cpp-beginners/thread89171.html
Нужно в массиве вывести Наименьшее количество элементов, которое нужно удалить, чтоб осталась возрастающая последовательность
C++ Динамическое распределение памяти Добрый вечер, помогите пожалуйста разобраться с задачкой!!! Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера nxn??? Буду рад любой помощи!!! подробнее

Показать сообщение отдельно
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
24.01.2010, 21:37     Сравнение наследников
Цитата Сообщение от togramago Посмотреть сообщение
vector<Base *> ds;
у тебя в векторе два вида классов хранится(Service, Item)?
Каждый класс должен сравниваться только со своим классом? Или Service может с Item сравниваться?
Зачем ты вообще определила все виды операторов отношения(>,<,>=,...)?
***
вот я ещё один вид решения реализовал. но я думал, что у тебя только один подкласс. поэтому и приводил к нему явно.
это паттерн "Стратегия".

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
52
53
54
struct Base { 
};
 
struct Derived : Base {
  friend struct EqualStrategy;
  friend struct NotEqualStrategy;
 
  Derived(int data) : data_(data) { }  
private:
  int data_;
};
 
struct Strategy {
  virtual bool compare(Base *lhs, Base *rhs) = 0;
};
 
struct EqualStrategy : Strategy {
  virtual bool compare(Base *lhs, Base *rhs) {
    return ((Derived*)lhs)->data_ == ((Derived*)rhs)->data_;
  }
};
 
struct NotEqualStrategy : Strategy {
  virtual bool compare(Base *lhs, Base *rhs) {
    return ((Derived*)lhs)->data_ != ((Derived*)rhs)->data_;
  }
};
 
struct Context {
private:
  Strategy *strategy_;
public:
  Context() { }
  
  bool compare(const char *operation, Base *b1, Base *b2) {
    
    if (strcmp(operation, "==") == 0) {
      strategy_ = new EqualStrategy;
    } else if (strcmp(operation, "!=") == 0) {
      strategy_ = new NotEqualStrategy;
    }
    return strategy_->compare(b1, b2);
  }
};
 
int main()
{
  Base *ptr1 = new Derived(10);
  Base *ptr2 = new Derived(20);
 
  Context c;
  bool res = c.compare("!=", ptr1, ptr2);
  
}
Добавлено через 18 минут
двойную диспетчеризацию можно применить для того, чтобы выяснить оба типа объекта, переданные через указатель на их базовые классы. вобщем togramago тебя ждёт много веселья

http://bytes.com/topic/c/answers/168...tor#post653324
 
Текущее время: 11:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru