Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
unkarjedy
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
1

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

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

Здравствуйте.

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

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

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

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

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

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 16:58
Ответы с готовыми решениями:

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

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

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

Можно ли создать поток для выполнения отдельного метода
Здравствуйте! Подскажите как ( и возможно ли это вообще ) создать поток для...

Можно ли создать поток для нестатического метода класса?
Можно ли создать поток для не статик метода класса? #include <windows.h>...

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

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

C++
1
float det() { this->determinate() }
Это будет лучше чем создавать массив указателей на функцию=)
0
Invader_Zim
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
09.10.2012, 23:40 11
unkarjedy, Ну можно и не массив, а один указатель.
0
Kastaneda
Jesus loves me
Эксперт С++
4943 / 3020 / 346
Регистрация: 12.12.2009
Сообщений: 7,622
Записей в блоге: 2
Завершенные тесты: 1
10.10.2012, 11:59 12
Цитата Сообщение от unkarjedy Посмотреть сообщение
Там где определители встречается часто лучше было бы использовать det(); - короче
В эпоху ctrl + space по-моему вообще не актуальная проблема.
А так да, указатель можно сделать.
Или, раз уж на то пошло, то вообще через макрос, но это очень, очень некрасиво.
0
Invader_Zim
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
10.10.2012, 13:53 13
Kastaneda, Ну не у всех интелсенс есть. Может он через блокнот и консоль работает?
макрос это не некрасиво, это не типобезопасно.
0
Kastaneda
Jesus loves me
Эксперт С++
4943 / 3020 / 346
Регистрация: 12.12.2009
Сообщений: 7,622
Записей в блоге: 2
Завершенные тесты: 1
10.10.2012, 14:23 14
Цитата Сообщение от Invader_Zim Посмотреть сообщение
макрос это не некрасиво, это не типобезопасно.
Я имел ввиду другой макрос, просто сокращающий запись, например
C++
1
#define DET ob.determinate()
безопасно, но не красиво)
0
unkarjedy
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
OhMyGodSoLong
~ Эврика! ~
1247 / 996 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
10.10.2012, 15:32 16
С++ не умеет макросы с шаблонами синтаксиса.

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

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

Можно ли сделать 1 шаблонный псевдоним на 2 разных шаблонных класса?
Например, есть шаблон работающий с числами - Number, и другой со строками -...

Нарисуйте блок-схему реализации метода Queue::Get. Объясните работу метода
Нарисуйте блок-схему реализации метода Queue::Get. Объясните работу метода....

Составление метода выбора и метода обмена
Расположить в порядке убывания четные элементы левого нижнего треугольника...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

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