Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1

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

04.04.2014, 17:38. Показов 1832. Ответов 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
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2014, 17:38
Ответы с готовыми решениями:

Передача метода класса в качестве параметра для метода другого класса
Здравствуйте, Передо мной стоит такая задача. Необходимо разработать механизм, который бы мог прервать любую функцию, при этом абсолютна...

Переход между секциями
Помогите плз не могу сделать такие переходы кто знает как?

Добавление паузы между вызовами метода (с помощью класса Timer)
Есть кнопка private void StartPause_btn_Click(object sender, EventArgs e) { } Которая должна...

22
20 / 20 / 15
Регистрация: 22.01.2013
Сообщений: 76
04.04.2014, 18:29
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{
}
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
07.04.2014, 10:50  [ТС]
TSed, ты гений! а теперь тоже самое только не меняя класс А
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.04.2014, 12:03
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
как сделать чтобы метод ABS в классе В, был в секции private а не public?
Очевидно же:
C++
1
2
3
4
class B:public A{
    private:
    int ABS(int Count, ...); 
};
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
07.04.2014, 14:05  [ТС]
да, но так для нее придется писать реализацию, а если в ней переменное число параметров то я их не смогу передать в функцию родителя
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
07.04.2014, 14:20
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 из базового класса
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
07.04.2014, 14:32
2zss
Вы уверены в том что оно скомпилится?

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

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

Какого рода параметры передаются? Может быть можно заменить массивом?
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
07.04.2014, 14:46
Цитата Сообщение от stima Посмотреть сообщение
Вы уверены в том что оно скомпилится?
А причем здесь va_list?
Отнаследовав класс с модификатором private мы получили private доступ
ко всем членам и методам базового класса, которые были public и protected.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.04.2014, 14:49
Цитата Сообщение от zss Посмотреть сообщение
А причем здесь va_list?
При том, что нельзя передать переменное число параметров из одной функции с эллипсисом в другую функцию с эллипсисом. Нужно использовать версию с va_list. http://stackoverflow.com/quest... c-function
0
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
07.04.2014, 14:50
При чем тут модификатор доступа, Вы посмотрите как Вы передаете параметры, попробуйте скомпилировать. И когда не получится посмотрите, что значит '...' и при чем там va_list.
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
07.04.2014, 15:15
Цитата Сообщение от Tulosba Посмотреть сообщение
нельзя передать переменное число параметров
Я думал, что точки означали "и т.д."
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
07.04.2014, 17:34  [ТС]
Отнаследовав класс с модификатором private мы получили private доступ
ко всем членам и методам базового класса, которые были public и protected.
В том то и дело что "ко всем членам и методам", а мне нужно переместить только 3 метода!

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

Какого рода параметры передаются? Может быть можно заменить массивом?
в принципе можно передать параметры с помощью размера и двух указателей на массивы, но тогда совершенно неудобно будет работать с методами, каждый раз создавать 2 массива и заполнять их
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.04.2014, 17:52
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
каждый раз создавать 2 массива и заполнять их
Какого рода данные передаются?
И хотелось бы всё же услышать ответ на п.2.
Цитата Сообщение от Tulosba Посмотреть сообщение
2. Сокрытие ранее доступной функции.
Зачем? Опишите ситуацию в целом. Возможно всё дело в архитектурной ошибке.
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
07.04.2014, 18:08
Лучший ответ Сообщение было отмечено Tulosba как решение

Решение

Цитата Сообщение от 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;
};
3
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.04.2014, 18:16
Цитата Сообщение от DrOffset Посмотреть сообщение
В общем здесь все довольно просто:
Ларчик просто открывался
Теперь ещё бы лавочку прикрыть:
C++
1
2
B b;
b.A::ABS(0);
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
07.04.2014, 19:51
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;
};
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.04.2014, 20:41
Цитата Сообщение от DrOffset Посмотреть сообщение
Если же задача позволяет, то вполне решение.
А обоснованность такого подхода (сокрытие раннее открытого метода) есть?
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
07.04.2014, 20:46
Цитата Сообщение от Tulosba Посмотреть сообщение
А обоснованность такого подхода
А это ты не у меня спрашивай
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
07.04.2014, 21:11
DrOffset, у ТСа я уже спрашивал. Ответа пока нет. Мне с идиологической точки зрения интересно послушать версии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2014, 21:11
Помогаю со студенческими работами здесь

Скопировать текст между Секциями вместе с названием
Натолкните на мысль, вывести текст между секциями, желательно с именем первой секции. POLYLINE может меняться на POLYGON и т.д. Код...

Как сверстать такие переходы между секциями?
Добрый день. Интересует вопрос, как сверстать вот такие неровные переходы между секциями? Было бы вообще замечательно, если...

Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода
В базовом классе метод помечен как virtual. Насколько я понял из книги: override означает, что метод не утрачивает связи с базовым...

Вызов метода класса из метода другого класса
Помогите школнегу Имеется несколько классов class Com { protected: unsigned char bufrd, bufwr; unsigned char tx_index,...

Вызов метода агрегата из метода агрегируемого класса
Есть класс-агрегат Game function Game() { this.game_map = null; // другие члены } Game.prototype.needToCall = function() {...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru