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

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

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

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

04.04.2014, 17:38. Просмотров 580. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2014, 17:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перемещение метода класса между секциями (C++):

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

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

Вызов метода производного класса через обращение к методу базового класса - C++
Добрый день. Изучаю основы ООП, наткнулся на проблему. Если создавать классы внутри main.cpp, то всё нормально. Если же создавать в...

Ошибка при вызове метода класса в методе другого класса - C++
Господа программисты, возникла такая проблема. При вызове метода класса в методе другого класса выходит такая ошибка " нестандартный...

Вызов метода класса без создания экземпляра класса. - C++
В общем мне для функционирования одной программы нужно постоянно вызывать метод одного из классов. Я это делаю с помощью new - delete. Мне...

Указатель на метод класса в качестве аргумента метода класса - C++
Функция _createFun вызывается для создания ХХХ в основном классе. Но вот потребовалось создать ХХХ в дополнительном классе. Вопрос: как...

22
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{
}
0
MrAndrey_ka
78 / 78 / 2
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
07.04.2014, 10:50  [ТС] #3
TSed, ты гений! а теперь тоже самое только не меняя класс А
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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, ...); 
};
0
MrAndrey_ka
78 / 78 / 2
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
07.04.2014, 14:05  [ТС] #5
да, но так для нее придется писать реализацию, а если в ней переменное число параметров то я их не смогу передать в функцию родителя
0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 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 из базового класса
0
stima
482 / 334 / 38
Регистрация: 22.03.2011
Сообщений: 1,076
Завершенные тесты: 2
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);
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.04.2014, 14:43 #8
MrAndrey_ka, а зачем вообще такие сложности?
1. Эллипсис.
2. Сокрытие ранее доступной функции.

Какого рода параметры передаются? Может быть можно заменить массивом?
0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 1
07.04.2014, 14:46 #9
Цитата Сообщение от stima Посмотреть сообщение
Вы уверены в том что оно скомпилится?
А причем здесь va_list?
Отнаследовав класс с модификатором private мы получили private доступ
ко всем членам и методам базового класса, которые были public и protected.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.04.2014, 14:49 #10
Цитата Сообщение от zss Посмотреть сообщение
А причем здесь va_list?
При том, что нельзя передать переменное число параметров из одной функции с эллипсисом в другую функцию с эллипсисом. Нужно использовать версию с va_list. http://stackoverflow.com/questions/6...iadic-function
0
stima
482 / 334 / 38
Регистрация: 22.03.2011
Сообщений: 1,076
Завершенные тесты: 2
07.04.2014, 14:50 #11
При чем тут модификатор доступа, Вы посмотрите как Вы передаете параметры, попробуйте скомпилировать. И когда не получится посмотрите, что значит '...' и при чем там va_list.
0
zss
Модератор
Эксперт С++
6400 / 5966 / 1943
Регистрация: 18.12.2011
Сообщений: 15,357
Завершенные тесты: 1
07.04.2014, 15:15 #12
Цитата Сообщение от Tulosba Посмотреть сообщение
нельзя передать переменное число параметров
Я думал, что точки означали "и т.д."
0
MrAndrey_ka
78 / 78 / 2
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
07.04.2014, 17:34  [ТС] #13
Отнаследовав класс с модификатором private мы получили private доступ
ко всем членам и методам базового класса, которые были public и protected.
В том то и дело что "ко всем членам и методам", а мне нужно переместить только 3 метода!

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

Какого рода параметры передаются? Может быть можно заменить массивом?
в принципе можно передать параметры с помощью размера и двух указателей на массивы, но тогда совершенно неудобно будет работать с методами, каждый раз создавать 2 массива и заполнять их
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.04.2014, 17:52 #14
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
каждый раз создавать 2 массива и заполнять их
Какого рода данные передаются?
И хотелось бы всё же услышать ответ на п.2.
Цитата Сообщение от Tulosba Посмотреть сообщение
2. Сокрытие ранее доступной функции.
Зачем? Опишите ситуацию в целом. Возможно всё дело в архитектурной ошибке.
0
DrOffset
7310 / 4406 / 998
Регистрация: 30.01.2014
Сообщений: 7,242
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;
};
3
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2014, 18:08
Привет! Вот еще темы с ответами:

Обработка метода класса в зависимости от типа данного класса - C++
Имеется класс родителя A с методом Update(), этот класс имеет 2 дочерних класса B, C, каждый из них имеет свой метод обработки Update:...

Вызов динамического метода класса по указателю на объект класса - C++
Как это можно сделать? И хотелось бы как можно проще.

Вызов метода внутреннего класса методом внешнего класса - C++
Не могу разобраться как реализовать вложенный класс и как его вызвать. Занимаюсь по Лафоре, про вложенные классы ничего, а задача в конце...

Оптимизация работы метода класса с объектами класса [C++] - C++
Здравствуйте! Я хочу сделать 25 000 объектов класса, в последствии они все будут разными, но сейчас, для упрощения задачи, я делаю их...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
07.04.2014, 18:08
Ответ Создать тему
Опции темы

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