3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
|
1 | |
Как создать псевдоним метода09.10.2012, 16:58. Показов 4320. Ответов 15
Метки нет (Все метки)
Здравствуйте.
Интересует можно ли создать в СИ++ для класса псевдоним метода? хочу сделать, чтобы эти две записи были равносильны float CMatrix::determinate(); float CMatrix::det(); При чём не хочу использовать: float CMatrix::det() { return this->determinate(); } Спасибо.
0
|
09.10.2012, 16:58 | |
Ответы с готовыми решениями:
15
Как создать псевдоним для лямбды? Как использовать псевдоним? Как задать псевдоним для указателя на структуру Как создать template для больше чем одной функции/метода? |
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 | |||||
Суть вопроса была - есть ли реализация псевдонимов в С++.
Раз нет то лучший способ - просто создать ещё один метод - по сути если написать
0
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
09.10.2012, 23:40 | 11 |
unkarjedy, Ну можно и не массив, а один указатель.
0
|
10.10.2012, 11:59 | 12 |
В эпоху ctrl + space по-моему вообще не актуальная проблема.
А так да, указатель можно сделать. Или, раз уж на то пошло, то вообще через макрос, но это очень, очень некрасиво.
0
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
10.10.2012, 13:53 | 13 |
Kastaneda, Ну не у всех интелсенс есть. Может он через блокнот и консоль работает?
макрос это не некрасиво, это не типобезопасно.
0
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
|||||||||||
10.10.2012, 15:22 [ТС] | 15 | ||||||||||
В С++ #define избегают везде где возможно. +матриц много может быть если на то пошло то макрос должен быть не как вы написали а таким:
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 | |
10.10.2012, 15:32 | |
Помогаю со студенческими работами здесь
16
Как создать класс внутри метода? Как грамотно сделать псевдоним? Как использовать псевдоним столбца? Как правильно создать View для метода? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |