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

Получить доступ к методу, который при наследовании стал private - C++

Восстановить пароль Регистрация
 
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
19.01.2014, 12:10     Получить доступ к методу, который при наследовании стал private #1
Как получить доступ к методу, который при наследование стал private ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2014, 12:10     Получить доступ к методу, который при наследовании стал private
Посмотрите здесь:

C++ Доступ к private структуре класса
доступ к private членам класса C++
Доступ к объекту базового класса при закрытом наследовании C++
C++ доступ к private членам
Доступ к приватному методу наследника через родителя C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
19.01.2014, 12:11     Получить доступ к методу, который при наследовании стал private #2
Forumhelp, вроде перегружаемые функции в protected находятся?
TigerZT
0 / 0 / 0
Регистрация: 17.01.2014
Сообщений: 9
19.01.2014, 12:16     Получить доступ к методу, который при наследовании стал private #3
Если через вижуал то просто в кореном файле переименовать приват на паблик
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
19.01.2014, 12:22     Получить доступ к методу, который при наследовании стал private #4
А ещё можно использовать дружественную функцию, которая через объект обращается к закрытым методам и атрибутам класса, не являясь его членом.

Добавлено через 1 минуту
Вот наклепал быстренько простой пример.
P.S. переменные a,b по умолчанию - private.

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
#include <iostream>
 
using namespace std;
 
class exe
{
    int a,b;
public:
    exe (int i, int j)
    {
        a=i; b=j;
    }
    friend int fun (exe ob);
};
int fun (exe ob)
{
    return ob.a+ob.b;
}
int main()
{
    exe ob1(6,3);
    int s;
    s=fun(ob1);
    cout << "s= " << s << endl;
    return 0;
}
Forumhelp
1 / 1 / 0
Регистрация: 06.06.2013
Сообщений: 130
19.01.2014, 12:29  [ТС]     Получить доступ к методу, который при наследовании стал private #5
Цитата Сообщение от Folko Посмотреть сообщение
Forumhelp, вроде перегружаемые функции в protected находятся?
Мне нужно в производном классе получить доступ к методу базового класса, который при наследование в наследнике стал ptivate, поскольку наследование с доступом ptivate.

Добавлено через 5 минут
Бедел, тут показан пример как получить доступ к полям. А к методам также можно получить доступ?
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
19.01.2014, 12:43     Получить доступ к методу, который при наследовании стал private #6
Цитата Сообщение от Forumhelp Посмотреть сообщение
Бедел, тут показан пример как получить доступ к полям. А к методам также можно получить доступ?
Хороший вопрос.. Боюсь, что нет. Сейчас подумаю, может ещё придет что в голову, кроме дружественной функции.
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
19.01.2014, 12:49     Получить доступ к методу, который при наследовании стал private #7
Получить доступ к методу, который при наследовании стал private
Смотрите, что пишет Дейтел. Сделайте производный класс "другом" базового)
Сам только учусь, так что строго не судите, ничего лучше пока в голову не пришло)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2014, 12:54     Получить доступ к методу, который при наследовании стал private
Еще ссылки по теме:

ООП как можно ограничить доступ к методу производного классу C++
C++ Получить доступ к private полю объекта
Как получить доступ к методам класса, который содержится в векторе класса C++

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

Или воспользуйтесь поиском по форуму:
Бедел
 Аватар для Бедел
232 / 28 / 4
Регистрация: 04.06.2010
Сообщений: 283
19.01.2014, 12:54     Получить доступ к методу, который при наследовании стал private #8
Вот небольшие примеры.
C++
1
2
3
4
5
6
7
8
9
10
class A{
private:
int m_a;
 
friend class B;
};
class B{
public:
void change( A *aptr, int a ){ aptr->m_a = a; }
};

C++
1
2
3
4
5
6
  class X2 { friend class X1; ... };
  class X1 { ... // Определение дружественного класса.
     void f1(...);
     void f2(...);
      .    .    .    .
  };
Yandex
Объявления
19.01.2014, 12:54     Получить доступ к методу, который при наследовании стал private
Ответ Создать тему
Опции темы

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