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

Закрыть методы класса, от которого идет наследование - C++

Восстановить пароль Регистрация
 
AlexCore
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 26
28.08.2013, 21:41     Закрыть методы класса, от которого идет наследование #1
Здравствуйте.

Подскажите пожалуйста, как можно сделать так, чтобы некоторые методы класса, от которого идет наследование другого классы, были запрещены для использования.

Приведу пример: Если класс односвязанного списка:

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 Element{
public:
    value_t value;
    Element * next;
};
 
class LinkedList{
public:
    LinkedList(): head(0), tail(0), size_(0){};
    ~LinkedList();
 
    void push_back(value_t);
    void push_front(value_t);
    void reverse();
    void pop_back();
    void pop_front();
    Element * search(value_t);
    
    void display();
    long long size();
 
private:
    Element * head, * tail;
    long long size_;
};
На его основе мне нужно создать класс стека. Такие методы, как переворот, pop/push_back, search мне не просто не нужны, их не должно быть в классе стека.

Подскажите пожалуйста, как это можно сделать. Каким то модификатором доступа?

Заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.08.2013, 22:09     Закрыть методы класса, от которого идет наследование #2
AlexCore, private\protected наследование, либо композиция вместо наследования.

Добавлено через 23 минуты
С private наследованием это выглядит примерно так:
C++
1
2
3
4
5
6
7
class Stack : LinkedList {
 
public:
    using LinkedList::push_front;
    using LinkedList::pop_front;
    // всё остальное, что должно быть public
};
AlexCore
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 26
28.08.2013, 22:17  [ТС]     Закрыть методы класса, от которого идет наследование #3
Спасибо, возможно, получится сделать некоторые методы дружественными, то есть применить композицию
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.08.2013, 22:20     Закрыть методы класса, от которого идет наследование #4
Цитата Сообщение от AlexCore Посмотреть сообщение
возможно, получится сделать некоторые методы дружественными, то есть применить композицию
Эм, зачем там объявления друзей? Просто адаптор:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Stack {
 
public:
   void push_front(value_t value) {
      list.push_front(value);
   }
 
   void pop_front() {
      list.pop_front();
   }
 
   // И т.д.
 
private:
   LinkedList list;
};
AlexCore
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 26
28.08.2013, 22:39  [ТС]     Закрыть методы класса, от которого идет наследование #5
Огромное спасибо, получилось
Yandex
Объявления
28.08.2013, 22:39     Закрыть методы класса, от которого идет наследование
Ответ Создать тему
Опции темы

Текущее время: 12:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru