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

Что означает запись?

13.10.2019, 13:51. Показов 4120. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашел на MSDN-е, когда объясняли про специализацию шаблонов. Что означает T (без запятой!!!) и U::* (да еще и '*' - зачем, что это, для чего???)
C++
1
2
3
4
5
6
template <class T, class U> struct PTS<T U::*> {
   enum {
      IsPointer = 0,
      IsPointerToDataMember = 1
   };
};
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.10.2019, 13:51
Ответы с готовыми решениями:

Что означает запись в скобках и что возвращает return
Всем привет! Начал читать книгу BecomeAnXcoder и тут появился вопрос. В пример приведен такой код circleArea(float theRadius) //(1) ...

Что означает запись
Привет. Верна ли, и если да, то что значит данная запись и для чего она используется: bool found = false; found = winner(board) ==...

Что означает запись?
for (; j &lt; k; j++) - Что означает эта строчка? Интересует именно символ &quot;;&quot; сразу после скобки

10
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
13.10.2019, 14:00
Лучший ответ Сообщение было отмечено MJ_PRUTYG как решение

Решение

T U::* - все вместе, это указатель на член класс U,
T - может быть как типом объекта (если это поле класса), так и типом функции (если это метод класса).
3
3 / 3 / 0
Регистрация: 28.11.2018
Сообщений: 242
14.10.2019, 08:27  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
это указатель на член класс U
а на какой именно член класса U? Ну, то есть там же звездочка стоит, не название определенного метода
0
фрилансер
 Аватар для Алексей1153
6444 / 5639 / 1128
Регистрация: 11.10.2019
Сообщений: 15,000
14.10.2019, 09:14
MJ_PRUTYG, на любой. Главное - размещённый только в этом классе
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
14.10.2019, 09:24
Цитата Сообщение от MJ_PRUTYG Посмотреть сообщение
Ну, то есть там же звездочка стоит, не название определенного метода
звездочка говорит о том что это указатель на функцию, а U:: говорит о том что эта функция член находится в классе U.

указатель на функцию объявляется так: void (*Fptr) (),
его сигнатура есть: void (*)()
указатель на функцию член объявляется так: void (SomeClass::*my_memfunc_ptr)()
его сигнатура есть: void (SomeClass::*)()

https://rsdn.org/article/cpp/fastdelegate.xml
1
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
14.10.2019, 10:21
Цитата Сообщение от _stanislav Посмотреть сообщение
звездочка говорит о том что это указатель на функцию
Не только.
Как я уже сказал, это может быть и указатель на нестатический член - поле класса.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
14.10.2019, 10:35
Цитата Сообщение от DrOffset Посмотреть сообщение
Не только.
я предвидел твой ответ, но исправить (дополнить свой) поленился
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
14.10.2019, 10:41
Цитата Сообщение от MJ_PRUTYG Посмотреть сообщение
а на какой именно член класса U? Ну, то есть там же звездочка стоит, не название определенного метода
Это тип же, а не переменная. Название вы укажете, когда параметризовать этот шаблон будете конкретным чем-то.
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template <class T> struct PTS;
 
template <class T, class U> struct PTS<T U::*> {
   enum {
      IsPointer = 0,
      IsPointerToDataMember = 1 // это, кстати, некорректное название. должно быть IsPointerToMember
   };
};
 
class A
{
public:
    void foo();
    
    int boo;
};
 
int main()
{
    std::cout << PTS<decltype(&A::foo)>::IsPointerToDataMember << ' '
              << PTS<decltype(&A::boo)>::IsPointerToDataMember;
}
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от _stanislav Посмотреть сообщение
я предвидел твой ответ, но исправить (дополнить свой) поленился
В общем-то я бы не стал поправлять, если бы не рассинхрон даваемой в теме информации. Т.е. когда в одной теме два разных участника говорят противоречащие друг другу вещи. Лучше сразу разрешить эту ситуацию, чтобы потом никто не путался :)

0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12928 / 6796 / 1819
Регистрация: 18.10.2014
Сообщений: 17,197
14.10.2019, 10:44
Цитата Сообщение от _stanislav Посмотреть сообщение
указатель на функцию объявляется так: void (*Fptr) (),
его сигнатура есть: void (*)()
указатель на функцию член объявляется так: void (SomeClass::*my_memfunc_ptr)()
его сигнатура есть: void (SomeClass::*)()
Не ясно, правда, почему вы называете это "сигнатурами". Термин сигнатура в С++ уже занят и означает он совсем другое.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
14.10.2019, 10:54
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
почему вы называете это "сигнатурами"
тогда нужно наверно поправиться и сказать "тип функции"?
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
15.10.2019, 07:26
Цитата Сообщение от DrOffset Посмотреть сообщение
IsPointerToDataMember = 1 // это, кстати, некорректное название. должно быть IsPointerToMember
только сейчас дошло, что в статье ошибка та же которую я допустил, только наоборот, там говориться, что указатель на член данных, а я сказал, что на функцию член
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.10.2019, 07:26
Помогаю со студенческими работами здесь

Что означает запись?
Смотрел небольшую лекцию, где рассказывали про полиморфизм, шаблоны; и увидел такую запись: typename T::iter f(typename T::iter i) Что...

Что означает запись ?
Что означает(подразумевает) запись: class Datb:public Data{ public:Datb(int m, int x):Data(m){ } Полный код программы: #include...

Что означает запись 1.8e307?
Всем добрый день! Подскажите пожалуйста, как можно назвать на c++ это число? 1.8e307 Это типо максимально возможное?

Что означает запись int (*a)[10]?
int (*a); Что создаёт компилятор если я забиваю это?

Что означает запись int **a
int * a-указатель на целочисленное.А это что- int **a ?


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru