Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
AlexCore
2 / 2 / 2
Регистрация: 28.08.2013
Сообщений: 26
#1

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

28.08.2013, 21:41. Просмотров 335. Ответов 4
Метки нет (Все метки)

Здравствуйте.

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

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

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 мне не просто не нужны, их не должно быть в классе стека.

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

Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2013, 21:41
Ответы с готовыми решениями:

Классы, функции методы класса, наследование
Задание: Объявите класс Tarray, создающий тип "Массив". Определите элементы-данные класса: -...

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

Наследование: Как мне определить любой из методов заданного класса внутри другого класса?
Добрый день, подскажите пожалуйста, что я делаю не так Есть файл Container.h в котором храню...

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

C++ ООП Наследование методы
у меня тут класс A и класс B который наследует B наслудет конструкор класса A, в этом...

4
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 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
};
1
AlexCore
2 / 2 / 2
Регистрация: 28.08.2013
Сообщений: 26
28.08.2013, 22:17  [ТС] #3
Спасибо, возможно, получится сделать некоторые методы дружественными, то есть применить композицию
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 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;
};
1
AlexCore
2 / 2 / 2
Регистрация: 28.08.2013
Сообщений: 26
28.08.2013, 22:39  [ТС] #5
Огромное спасибо, получилось
0
28.08.2013, 22:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2013, 22:39

Наследование и виртуальные методы
В описании задания буквой А) обозначается задание на базовый класс, а буквой Б) - на класс...

Наследование. Виртуальные методы/деструкторы.
Есть базовый класс Cell (код можно даже не смотреть - он просто для иллюстрации -> вопрос внизу)...

Шаблон класса, параметром которого должны являться наследники определённого класса
Сразу извиняюсь за нубский вопрос. Суть в том, что я хочу сделать шаблон класса, параметром...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru