25 / 25 / 3
Регистрация: 06.03.2010
Сообщений: 59
|
||||||
1 | ||||||
Вывести на экран имя класса29.08.2010, 16:48. Показов 21904. Ответов 19
Метки нет (Все метки)
Можно как нибуть форматнуть в string имя класса?
0
|
29.08.2010, 16:48 | |
Ответы с готовыми решениями:
19
Вывести на экран имя и фамилию 10 раз Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса) Вывести на экран из класса Вывести на экран фамилию, имя и адрес учеников, у которых нет домашнего телефона |
4337 / 1506 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
|
||||||
29.08.2010, 16:49 | 2 | |||||
Сообщение было отмечено как решение
Решение
3
|
25 / 25 / 3
Регистрация: 06.03.2010
Сообщений: 59
|
|
29.08.2010, 17:00 [ТС] | 3 |
HIMen, прикольно. Допустим имя класса неизвестно.
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
29.08.2010, 17:01 | 4 |
bobromet, А зачем это может понадобиться? Есть такая вещь как typeid(Ob).name(); Но выведет не все имя, а сокращенный тип для этого класса.
Для использования надо подключить: #include <typeinfo> Ob - объект класса.
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
||||||
29.08.2010, 17:06 | 5 | |||||
Сообщение было отмечено как решение
Решение
bobromet,
4
|
Мат в 32 хода
237 / 172 / 18
Регистрация: 10.09.2009
Сообщений: 1,096
|
|
29.08.2010, 17:07 | 6 |
Добавлено через 59 секунд а вот про это не знал...
0
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||
29.08.2010, 17:14 | 7 | ||||||||||
nikkka, Почитай про RTTI. Определение типа во время выполнения(Информация о типе на этапе выполнения).
CyBOSSeR, а есть разница в наличии метода для класса? Или это идентично вашему коду?
1
|
4337 / 1506 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
|
|
29.08.2010, 17:18 | 8 |
Не понимаю, зачем это нужно. Или с++ позволяет подгружать код во время выполнения?
0
|
29.08.2010, 17:27 | 9 | |||||
CyBOSSeR,
2
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
29.08.2010, 17:29 | 10 | |||||
fasked,
Поиграем кто короче?)
1
|
25 / 25 / 3
Регистрация: 06.03.2010
Сообщений: 59
|
|
29.08.2010, 17:36 [ТС] | 11 |
Парни, отлично! Жму 5
Помню что в шарпе так делал, иногда когда куча классов с "говорящими" именами проще вывести имя класса чем каждый раз новую строчку писать .)
0
|
2347 / 1720 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
29.08.2010, 17:46 | 12 |
fasked, попробуй пронаследоватся от Class и вызови метод getName.
Хотя если метод сделать виртуальным все будет ок. Но если метод мы сделаем виртуальным, у подклассов появится возможность его переопределить, это не есть хорошо, тем более, что реализация данного методв должна быть одинакова во всех подклассах. Кроме того, делая метод виртуальным, мы получаем еще и указатель на таблицу виртуальных функций в каждом объекте.
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
29.08.2010, 18:49 | 13 | |||||
bobromet, можно сделать кривой "костыль" с помощью препроцессора:
1
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
29.08.2010, 19:07 | 14 |
На сколько я понял, то требуется аналог рефлексии из Java
0
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
29.08.2010, 19:08 | 15 |
0
|
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
|
|
29.08.2010, 19:26 | 16 |
Nameless One, рефлексия позволяет получить всю информацию о классе, зная только его имя, можно изменять этот класс, копировать его, сериализовать.
http://ru.wikipedia.org/wiki/%... %B8%D0%B5)
2
|
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
|
|
02.06.2015, 11:52 | 17 |
Ребят ну подскажите,как же все таки можно вывести имя объекта класса? Суть в том,что написал лабораторную, в самой лабе есть задание,чтоб на экран выводилось сообщение конструктора и деструктора,и показывало к кому объекту они применяются. Так то я конечно написал, все выводится,но вместо имени я так понимаю что выводится просто адрес объекта,а не его имя.Использовал просто указатель this при выводе. Попытался сделать как выше тут описано через библиотеку typeinfo,все равно не то,выводится не имя объекта,а имя класса . Так то преподаватель думаю ничего не скажет (ибо в самом задании написано,использовать указатель this), просто самому интересно,возможно ли все же как-то сделать,чтоб выводилось именно имя созданного объекта,а не его адрес,как работает через указатель this?
0
|
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
|
|
02.06.2015, 12:02 | 18 |
System16v, в С++ нету стандартных средств, которые позволяли бы вывести имя объекта или класса. Дело в том, что имена типов и объектов известны только компилятору. Когда программа уже выполняется, эту информацию получить сложно (не обращаясь к исходникам). Всё-таки С++ компилируется в машинный код, а в машинном коде такой информации нету — только сплошные адреса.
Добавлено через 1 минуту Вы могли попытаться как-нибудь подключится из программы к исходному коду с помощью отладчика. Но только я не знаю как это сделать
1
|
3 / 3 / 1
Регистрация: 19.02.2014
Сообщений: 115
|
|
02.06.2015, 12:12 | 19 |
mymedia, ну имя класса то на экран вывести можно как тут выше написано через typeid(*this).name , ток для чего его выводить,если имя класса неизменно и постоянно одинаковое , а меняются только созданные объекты класса,собственно имена которых и хотелось бы видеть . Можно конечно просто в конструктор запихнуть вызов функции,которая просто бы выдавала содержимое объекта,но в лабе 4-5 объектов,и для каждого несколько раз вызываются кострукторы\деструкторы,и если на каждое сообщение кон-ра\дес-ра выдавать содержимое объекта,в глазах зарябит,и не очень удобно смотреть. Эх,придется значит на адреса объектов только и смотреть. На счет отладчика,я об этом тоже ничего не знаю,т.к. начал недавно C++ изучать
0
|
02.06.2015, 12:12 | 20 | |||||
В GCC можно получить полное имя метода, в которое входит имя класса. Его можно "обрезать" и получить имя класса.
0
|
02.06.2015, 12:12 | |
02.06.2015, 12:12 | |
Помогаю со студенческими работами здесь
20
Вывести на экран элементы очереди пользовательского класса Как, создав переменную класса string, вывести ее последнюю букву на экран При перегрузке оператора для класса не получается использовать имя переменной такое же, как в описании класса Составить программу, которая вводит с клавиатуры имя и год рождения лица и выводит на экран "Привет Имя, тебе Р лет:). Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |