Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
1

Как создать псевдоним метода

09.10.2012, 16:58. Показов 4320. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Интересует можно ли создать в СИ++ для класса псевдоним метода?

хочу сделать, чтобы эти две записи были равносильны

float CMatrix::determinate();
float CMatrix::det();

При чём не хочу использовать:

float CMatrix::det() {
return this->determinate();
}

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2012, 16:58
Ответы с готовыми решениями:

Как создать псевдоним для лямбды?
ПРИВЕТ. не поможете ли советом, как решить проблему: хочу дать имя классу лямбды, но чето не...

Как использовать псевдоним?
Привет) Нужно наполнить map значениями из конструктора, но по задаче должен использоваться...

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

Как создать template для больше чем одной функции/метода?
Нужно чтобы следующее работало template<typename T> T& func<T>::operator(int num){ return...

15
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
09.10.2012, 17:17 2
unkarjedy, а зачем тебе?
0
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
09.10.2012, 17:32  [ТС] 3
Для читабельности
Где-то в программе использую determinate, чтобы было читабельно, там где один раз встречается, допустим.
Там где определители встречается часто лучше было бы использовать det(); - короче
0
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
09.10.2012, 18:22 4
unkarjedy, ну, можно иметь массив указателей на функции. Вообще коротко будет.
0
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
09.10.2012, 18:24 5
Нет, нельзя. Показанный вами способ является правильным, особенно его это сделать сразу в определении класса. Пожалуйста.
1
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
09.10.2012, 18:26 6
~OhMyGodSoLong~, ну он не хочет так. каг-бэ псевдоним можно запилить через указатель на функцию.
0
OhMyGodSoLong
09.10.2012, 18:33
  #7

Не по теме:

Ага, приучать к исходникам ядра смолоду. matrix->matix_ops->det(matrix);

0
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
09.10.2012, 18:34  [ТС] 8
не не... указатель на функцию - тоже не то. Просто в некоторых языках есть псевдонимы... Мне было интерессно есть ли в С++ реализация похожая. Понял - нет.

Добавлено через 56 секунд
да я и забыл совсем, что если определить метод в классе - это равносильно inline...
0
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
09.10.2012, 21:19 9
unkarjedy, почему не то? ты можеш вызывать ту-же функцию, только используя другое имя
0
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
09.10.2012, 21:24  [ТС] 10
Суть вопроса была - есть ли реализация псевдонимов в С++.
Раз нет то лучший способ - просто создать ещё один метод - по сути если написать

C++
1
float det() { this->determinate() }
Это будет лучше чем создавать массив указателей на функцию=)
0
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
09.10.2012, 23:40 11
unkarjedy, Ну можно и не массив, а один указатель.
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,114
Записей в блоге: 2
10.10.2012, 11:59 12
Цитата Сообщение от unkarjedy Посмотреть сообщение
Там где определители встречается часто лучше было бы использовать det(); - короче
В эпоху ctrl + space по-моему вообще не актуальная проблема.
А так да, указатель можно сделать.
Или, раз уж на то пошло, то вообще через макрос, но это очень, очень некрасиво.
0
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
10.10.2012, 13:53 13
Kastaneda, Ну не у всех интелсенс есть. Может он через блокнот и консоль работает?
макрос это не некрасиво, это не типобезопасно.
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,114
Записей в блоге: 2
10.10.2012, 14:23 14
Цитата Сообщение от Invader_Zim Посмотреть сообщение
макрос это не некрасиво, это не типобезопасно.
Я имел ввиду другой макрос, просто сокращающий запись, например
C++
1
#define DET ob.determinate()
безопасно, но не красиво)
0
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
10.10.2012, 15:22  [ТС] 15
В С++ #define избегают везде где возможно. +матриц много может быть если на то пошло то макрос должен быть не как вы написали а таким:

C++
1
#define (x).det(y) (x).determinate(y)
определение внутри класса:
C++
1
det() { determinate }
будет равносильно
inline определению

Добавлено через 32 секунды
это лучше будет макроса
0
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
10.10.2012, 15:32 16
С++ не умеет макросы с шаблонами синтаксиса.

В С++ нет поддержки делегатов на уровне синтаксиса.

В итоге любые попытки записать переименование метода иначе, как через inline-форму в определении класса, приводят дядю Оккама в уныние объёмом boilerplate-кода и количеством вводимых сущностей для того, чтобы получить тот же уровень удобства, что и inline-функция. (А если они ещё и виртуальными будут...) Я уж молчу про эффективность этого всего (я думаю, компилятор достаточно сообразителен, чтобы понять, что раскрытие инлайна и будет фактически синонимом функции).
0
10.10.2012, 15:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2012, 15:32
Помогаю со студенческими работами здесь

Как создать класс внутри метода?
Как создать класс внутри метода С# Язык программирования С# Csharp У меня есть метод в этом...

Как грамотно сделать псевдоним?
Делаю себе помощника в Excel Вот такие конструкции довольно часто мучают моцк: if...

Как использовать псевдоним столбца?
Здравствуйте Допустим есть такой запрос, содержащий вложенные запросы: SELECT (SELECT `one`...

Как правильно создать View для метода?
Как правильно создать View для метода? Запросом принимается несколько картинок. public...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru