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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
#1

Перемещение метода класса между секциями - C++

04.04.2014, 17:38. Просмотров 522. Ответов 22
Метки нет (Все метки)

есть 2 класса
C++
1
2
3
4
5
6
7
8
class A{
public:
int ABS(int Count, ...);
int ARS(int Count, ...);
}
 
class B:public A{
}
как сделать чтобы метод ABS в классе В, был в секции private а не public?
а метод ARS так и остался в public
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TSed
19 / 19 / 1
Регистрация: 22.01.2013
Сообщений: 76
04.04.2014, 18:29     Перемещение метода класса между секциями #2
C++
1
2
3
4
5
6
7
8
9
class A{
public:
int ARS(int Count, ...);
protected:
int ABS(int Count, ...);
}
 
class B:public A{
}
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
07.04.2014, 10:50  [ТС]     Перемещение метода класса между секциями #3
TSed, ты гений! а теперь тоже самое только не меняя класс А
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2014, 12:03     Перемещение метода класса между секциями #4
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
как сделать чтобы метод ABS в классе В, был в секции private а не public?
Очевидно же:
C++
1
2
3
4
class B:public A{
    private:
    int ABS(int Count, ...); 
};
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
07.04.2014, 14:05  [ТС]     Перемещение метода класса между секциями #5
да, но так для нее придется писать реализацию, а если в ней переменное число параметров то я их не смогу передать в функцию родителя
zss
Модератор
Эксперт С++
 Аватар для zss
6109 / 5712 / 1849
Регистрация: 18.12.2011
Сообщений: 14,586
Завершенные тесты: 1
07.04.2014, 14:20     Перемещение метода класса между секциями #6
C++
1
2
3
4
5
6
7
8
9
class A{
public:
int ABS(int Count, ...);
int ARS(int Count, ...);
}
class B:private A{
public:
int ARS(int Count, ...){A::ARC(Count,....);}
}
ABS будет private.
а public ARS будет вызывать private метод ARS из базового класса
stima
432 / 287 / 16
Регистрация: 22.03.2011
Сообщений: 936
Завершенные тесты: 1
07.04.2014, 14:32     Перемещение метода класса между секциями #7
2zss
Вы уверены в том что оно скомпилится?

Добавлено через 5 минут
1. Если класс А написан не Вами, то возможно там есть реализация через va_list.
2. Если класс А написан Вами, то возможно стоит добавить реализацию через va_list.

C++
1
int foo(char *fmt, va_list args, char *msg);
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2014, 14:43     Перемещение метода класса между секциями #8
MrAndrey_ka, а зачем вообще такие сложности?
1. Эллипсис.
2. Сокрытие ранее доступной функции.

Какого рода параметры передаются? Может быть можно заменить массивом?
zss
Модератор
Эксперт С++
 Аватар для zss
6109 / 5712 / 1849
Регистрация: 18.12.2011
Сообщений: 14,586
Завершенные тесты: 1
07.04.2014, 14:46     Перемещение метода класса между секциями #9
Цитата Сообщение от stima Посмотреть сообщение
Вы уверены в том что оно скомпилится?
А причем здесь va_list?
Отнаследовав класс с модификатором private мы получили private доступ
ко всем членам и методам базового класса, которые были public и protected.
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2014, 14:49     Перемещение метода класса между секциями #10
Цитата Сообщение от zss Посмотреть сообщение
А причем здесь va_list?
При том, что нельзя передать переменное число параметров из одной функции с эллипсисом в другую функцию с эллипсисом. Нужно использовать версию с va_list. http://stackoverflow.com/questions/6...iadic-function
stima
432 / 287 / 16
Регистрация: 22.03.2011
Сообщений: 936
Завершенные тесты: 1
07.04.2014, 14:50     Перемещение метода класса между секциями #11
При чем тут модификатор доступа, Вы посмотрите как Вы передаете параметры, попробуйте скомпилировать. И когда не получится посмотрите, что значит '...' и при чем там va_list.
zss
Модератор
Эксперт С++
 Аватар для zss
6109 / 5712 / 1849
Регистрация: 18.12.2011
Сообщений: 14,586
Завершенные тесты: 1
07.04.2014, 15:15     Перемещение метода класса между секциями #12
Цитата Сообщение от Tulosba Посмотреть сообщение
нельзя передать переменное число параметров
Я думал, что точки означали "и т.д."
MrAndrey_ka
 Аватар для MrAndrey_ka
77 / 77 / 2
Регистрация: 13.05.2009
Сообщений: 536
Записей в блоге: 1
07.04.2014, 17:34  [ТС]     Перемещение метода класса между секциями #13
Отнаследовав класс с модификатором private мы получили private доступ
ко всем членам и методам базового класса, которые были public и protected.
В том то и дело что "ко всем членам и методам", а мне нужно переместить только 3 метода!

MrAndrey_ka, а зачем вообще такие сложности?
1. Эллипсис.
2. Сокрытие ранее доступной функции.

Какого рода параметры передаются? Может быть можно заменить массивом?
в принципе можно передать параметры с помощью размера и двух указателей на массивы, но тогда совершенно неудобно будет работать с методами, каждый раз создавать 2 массива и заполнять их
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2014, 17:52     Перемещение метода класса между секциями #14
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
каждый раз создавать 2 массива и заполнять их
Какого рода данные передаются?
И хотелось бы всё же услышать ответ на п.2.
Цитата Сообщение от Tulosba Посмотреть сообщение
2. Сокрытие ранее доступной функции.
Зачем? Опишите ситуацию в целом. Возможно всё дело в архитектурной ошибке.
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
07.04.2014, 18:08     Перемещение метода класса между секциями #15
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
как сделать чтобы метод ABS в классе В, был в секции private а не public?
В общем здесь все довольно просто:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class A
{
public:
    int ABS(int Count, ...);
    int ARS(int Count, ...);
};
 
class B : public A
{
public:
 
private:
    using A::ABS;
};
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2014, 18:16     Перемещение метода класса между секциями #16
Цитата Сообщение от DrOffset Посмотреть сообщение
В общем здесь все довольно просто:
Ларчик просто открывался
Теперь ещё бы лавочку прикрыть:
C++
1
2
B b;
b.A::ABS(0);
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
07.04.2014, 19:51     Перемещение метода класса между секциями #17
Tulosba, лавочку можно прикрыть через приватное наследование. Но тогда мы потеряем в приводимости указателей и возможно поменяем смысл, который отражает код. Если же задача позволяет, то вполне решение.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A
{
public:
    int ABS(int Count, ...);
    int ARS(int Count, ...);
};
 
class B : private A
{
public:
    using A::ARS;
 
private:
    using A::ABS;
};
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2014, 20:41     Перемещение метода класса между секциями #18
Цитата Сообщение от DrOffset Посмотреть сообщение
Если же задача позволяет, то вполне решение.
А обоснованность такого подхода (сокрытие раннее открытого метода) есть?
DrOffset
6817 / 4028 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
07.04.2014, 20:46     Перемещение метода класса между секциями #19
Цитата Сообщение от Tulosba Посмотреть сообщение
А обоснованность такого подхода
А это ты не у меня спрашивай
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 21:11     Перемещение метода класса между секциями
Еще ссылки по теме:

C++ Не удается обратиться к свойству класса из метода класса
Обработка метода класса в зависимости от типа данного класса C++
C++ Вызов метода класса из DLL
C++ Вызов метода класса из main
C++ Ошибка в вызове метода класса

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
07.04.2014, 21:11     Перемещение метода класса между секциями #20
DrOffset, у ТСа я уже спрашивал. Ответа пока нет. Мне с идиологической точки зрения интересно послушать версии.
Yandex
Объявления
07.04.2014, 21:11     Перемещение метода класса между секциями
Ответ Создать тему
Опции темы

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