0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
||||||
1 | ||||||
Указатель на шаблонный класс25.06.2022, 00:57. Показов 1015. Ответов 16
Метки нет (Все метки)
Как мне получить адрес шаблонного класса? Без сохранения размера который передается в параметры шаблона (в примере это 10).
0
|
25.06.2022, 00:57 | |
Ответы с готовыми решениями:
16
Указатель на шаблонный класс Обобщенный указатель на шаблонный класс Указатель на абстрактный шаблонный класс Собственный шаблонный указатель на функцию |
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
25.06.2022, 01:12 | 2 |
1) у класса нет адреса, адрес есть у объекта
2) точно так же, как и у любого другого, только указать правильный тип
0
|
0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
|
25.06.2022, 01:58 [ТС] | 3 |
Ну тогда у объекта класса)
Добавлено через 1 минуту Можете подсказать как правильно указать тип?)
0
|
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
|
|
25.06.2022, 02:14 | 4 |
0
|
0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
|
26.06.2022, 01:41 [ТС] | 5 |
Тоесть без использования <> никак?
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
26.06.2022, 15:27 | 6 |
Antohych, а в чем проблема?
0
|
0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
|
26.06.2022, 15:29 [ТС] | 7 |
Проблема в том что у меня могут быть классы с разным размером, не только 10
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
26.06.2022, 15:33 | 8 |
Antohych, <10> - это часть типа. Т.е.
MyClass<10> и, например, MyClass<11> - это два разных типа.
0
|
0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
|
26.06.2022, 15:34 [ТС] | 9 |
Тогда можно как-то обрабатывать эти 2 типа?
Добавлено через 17 секунд Или как-то это обойти
0
|
0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
|
26.06.2022, 15:40 [ТС] | 11 |
Ну мне нужно передать класс в функцию и уже там с ней что-то делать. Я знаю что это можно сделать по другому, например сделать с указателями и указывать резмер в конструкторе, но меня интересует именно этот способ. Есть ли такая возможность?
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
||||||
26.06.2022, 15:44 | 12 | |||||
Сообщение было отмечено Antohych как решение
Решение
Это к тому, что если вы поместили в void* указатель на int, то и доставать оттуда должны именно тип int*. Если вы поместили
MyClass<10>* , то и доставать должны MyClass<10>*.Возможно стоит изменить подход? Например можно ценой небольшого снижения производительности перенести часть поведения в динамический полиморфизм.
Этот способ - основан на порождении разных типов. Если в конечном счете вам не нужны разные типы, а нужен один конкретный тип, то очевидным образом этот способ не подходит. Либо компромиссный вариант (использование которого, впрочем, тоже должно быть обосновано) я написал выше.
1
|
0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
|
26.06.2022, 15:44 [ТС] | 13 |
Спасибо большое. Чё то я и не подумал про полиморфизм)
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
26.06.2022, 15:49 | 14 |
Antohych, а void* вам точно нужен? Это, вообще говоря, крайняя мера от безысходности на стыке разных языков программирования.
0
|
0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
|
26.06.2022, 15:59 [ТС] | 15 |
Ну здесь можно и без void*. Ну я это хотел применить в потоках. А там если использовать winapi получить даннные можно только из LPVOID
Добавлено через 44 секунды Чесно говоря я уже реализовал это с указателями) Но теперь попробую так
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
26.06.2022, 16:02 | 16 |
В С++ есть потоки, если что Они нормально работают с типизацией С++ и вам не придется использовать void*.
В С++ не все то, что компилируется и даже работает, является корректным и правильным Просто на всякий случай имейте это в виду.
0
|
0 / 0 / 0
Регистрация: 21.03.2022
Сообщений: 26
|
|
26.06.2022, 16:13 [ТС] | 17 |
Ну я создавал потоки с помощью CreateThread
Добавлено через 2 минуты Ну у меня ещё вопрос небольшой есть) Я читал что если поток создан, то его нужно обязательно запустить Вот с помощью CreateThread можно создать поток который останлвлен. Можно ли этот остановленный поток удалить? Добавлено через 2 минуты С помощью CloseHandle это сделать можно? Добавлено через 1 минуту Ну или с помощью ExitThread(вроде так называется) Добавлено через 3 минуты Слово удалить тут не совсем умесно. Я имел ввиде остановить, что потом удаление потока прошло успешно
0
|
26.06.2022, 16:13 | |
26.06.2022, 16:13 | |
Помогаю со студенческими работами здесь
17
Класс Matrix: реализовать шаблонный класс для двумерных массивов Шаблонный класс и класс одномерный массив Если в класс нужно передать указатель на указатель на массив строк неизвестной длинны? Переделать класс в шаблонный класс Шаблонный класс Шаблонный класс шаблонный класс Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |