Указатель возврата C ++ типа T из массива Char

Мы работаем над проектом, который требует от нас создания и управления кучей в C ++. Мы используем массив символов для хранения нашей памяти (в проекте не используется «new»). У нас есть функция allocate, которая должна возвращать указатель типа T. У нас есть пара типов def и шаблон, чтобы помочь нам

template <typename T>
typedef T    value_type;
typedef value_type*  pointer;

Поэтому нам нужно вернуть «указатель». Вопрос:

Как мы можем вернуть «указатель», который указывает на определенный индекс в нашем массиве символов?

Скажите, если начало выделенного блока указывает на адрес 5, а имя типа T — int. Как мы можем сделать указатель int (используя наш «указатель»), который указывает на индекс массива в 5?

Мы пытались использовать reinterpret_cast <pointer> (a[index]) привести индекс массива к указателю. Дополнительно мы попробовали reinterpret_cast <pointer> (a + index) чтобы получить указатель массива, переместите его вверх по индексу и приведите его к нашему указателю типа. Каждый раз указатель указывает на что-то вроде «0xfffffffffff» или группу f, за которыми может следовать 0c или какое-то случайное значение, что приводит к ошибке сегментации, когда мы разыменовываем ее позже в программе (например, в функции конструкции).

Спасибо!

редактировать массив «а» наш массив символов

1

Решение

Я думаю, что мы поняли это. Мы имеем:

reinterpret_cast <pointer> (a[index])

Что даст нам указатель индекса массива (в основном указатель из значение, а не указатель в ценность).

Мы изменили это на

reinterpret_cast <pointer> (&a[index])

Что даст нам указатель на индекс массива (в основном указатель в значение, а не из Значение). Извините, если это тонкое использование «из» и «к» не делает с тех пор. Я полагаю, это разница между

int a = 5

int* k = &a

против

int* k = a //even though this wouldnt compile

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]