0 / 0 / 0
Регистрация: 05.12.2017
Сообщений: 9
|
|
1 | |
Каст this к std::string21.09.2018, 19:01. Показов 1040. Ответов 9
Метки нет (Все метки)
Возможно ли скастовать указатель this к std::string так, что бы в std::string оказался адрес текущего объекта в символьном представлении
0
|
21.09.2018, 19:01 | |
Ответы с готовыми решениями:
9
ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri Запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’ Корректен ли каст из string в wstring? На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами |
0 / 0 / 0
Регистрация: 05.12.2017
Сообщений: 9
|
|
21.09.2018, 19:21 [ТС] | 3 |
0
|
900 / 477 / 93
Регистрация: 10.06.2014
Сообщений: 2,698
|
|
21.09.2018, 19:31 | 4 |
Kastaneda,
А это разве не UB? Strict aliasing вроде как нарушается Добавлено через 1 минуту К тому же в string в качестве поля есть не только указатель на массив символов но и другие вспомогательные поля. Как вообще должен выглядеть кастуемый объект?
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||
21.09.2018, 20:11 | 5 | ||||||||||
В std::string это можно записать, а кастовать нужно к std::size_t
Что-то наподобие
+ добавить заголовок
1
|
Неэпический
|
||||||
21.09.2018, 20:20 | 6 | |||||
uintptr_t Чем не угодил вариант
0
|
TRam_
|
21.09.2018, 20:39
#7
|
0
|
Комп_Оратор)
|
|
22.09.2018, 00:30 | 8 |
Странная смесь мягкого с холодным. Просто адрес, это целое без знака и его можно конвертировать. Но при чём тут this в частности и указатель определённого типа вообще? this это определённый тип и он не может быть void * . При конвертации в цепочку байт информация о типе теряется. Адрес это координата начала объекта, а тип - всё остальное (размер, формат, операции, инвариант/ы). Но есть и хорошая новость, - можно слово "this" сконвертировать в строку и сохранить его в, например json подобном формате с адресом (через двоеточие - пара ключ/значение). Ключ у всех будет одинаковый. И это имеет свои преимущества. Не нужно париться с вариантами.
0
|
Вездепух
12769 / 6651 / 1791
Регистрация: 18.10.2014
Сообщений: 16,814
|
|
22.09.2018, 03:00 | 9 |
0
|
4001 / 2548 / 428
Регистрация: 09.09.2017
Сообщений: 11,297
|
|
22.09.2018, 09:24 | 10 |
А typeid(x).name() не устроит?
0
|
22.09.2018, 09:24 | |
22.09.2018, 09:24 | |
Помогаю со студенческими работами здесь
10
Реализация класса MyString. Стандартная библиотека, std::string, std::vector Операция std::cout для Объекта типа std::string Передача функции указатель на элемент std::vector<std::string> No match for 'operator<' (operand types are 'std::__cxx11::string {aka std::__c Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |