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

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

Войти
Регистрация
Восстановить пароль
 
unkarjedy
3 / 3 / 0
Регистрация: 13.03.2011
Сообщений: 114
#1

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

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

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

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

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

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

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

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

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

Не по теме:

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

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

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

C++
1
float det() { this->determinate() }
Это будет лучше чем создавать массив указателей на функцию=)
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
09.10.2012, 23:40     Как создать псевдоним метода #11
unkarjedy, Ну можно и не массив, а один указатель.
Kastaneda
Форумчанин
Эксперт С++
4470 / 2832 / 224
Регистрация: 12.12.2009
Сообщений: 7,202
Записей в блоге: 1
Завершенные тесты: 1
10.10.2012, 11:59     Как создать псевдоним метода #12
Цитата Сообщение от unkarjedy Посмотреть сообщение
Там где определители встречается часто лучше было бы использовать det(); - короче
В эпоху ctrl + space по-моему вообще не актуальная проблема.
А так да, указатель можно сделать.
Или, раз уж на то пошло, то вообще через макрос, но это очень, очень некрасиво.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
10.10.2012, 13:53     Как создать псевдоним метода #13
Kastaneda, Ну не у всех интелсенс есть. Может он через блокнот и консоль работает?
макрос это не некрасиво, это не типобезопасно.
Kastaneda
Форумчанин
Эксперт С++
4470 / 2832 / 224
Регистрация: 12.12.2009
Сообщений: 7,202
Записей в блоге: 1
Завершенные тесты: 1
10.10.2012, 14:23     Как создать псевдоним метода #14
Цитата Сообщение от Invader_Zim Посмотреть сообщение
макрос это не некрасиво, это не типобезопасно.
Я имел ввиду другой макрос, просто сокращающий запись, например
C++
1
#define DET ob.determinate()
безопасно, но не красиво)
unkarjedy
3 / 3 / 0
Регистрация: 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 секунды
это лучше будет макроса
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2012, 15:32     Как создать псевдоним метода
Еще ссылки по теме:

Как можно использовать фактический параметр у метода? C++
Функция как аргумент шаблонного метода класса C++
C++ Можно ли сделать 1 шаблонный псевдоним на 2 разных шаблонных класса?
Как создать псевдоним для лямбды? C++
C++ Как обратиться к компоненте формы из метода класса?

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

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
10.10.2012, 15:32     Как создать псевдоним метода #16
С++ не умеет макросы с шаблонами синтаксиса.

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

В итоге любые попытки записать переименование метода иначе, как через inline-форму в определении класса, приводят дядю Оккама в уныние объёмом boilerplate-кода и количеством вводимых сущностей для того, чтобы получить тот же уровень удобства, что и inline-функция. (А если они ещё и виртуальными будут...) Я уж молчу про эффективность этого всего (я думаю, компилятор достаточно сообразителен, чтобы понять, что раскрытие инлайна и будет фактически синонимом функции).
Yandex
Объявления
10.10.2012, 15:32     Как создать псевдоним метода
Ответ Создать тему
Опции темы

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