0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 19
|
|
1 | |
Изменение типа массива30.06.2018, 23:34. Показов 4942. Ответов 13
Метки нет (Все метки)
Вопрос вот в чем: допустим я выделяю память под int массив int **pA=new int*[size]; как можно этот массив преобразовать явным или неявным способом в массив типа float или double?
static_cast<>() ругается и не дает мне менять тип. Если более подробно расписывать проблему то, у меня есть шаблон где происходит непосредственно создание и заполнение массива какими-то числами, а в main у меня менюшка где пользователю дан выбор типа данных массива, так вот, перед менюшкой я выделяю память под int массив, и в других case я хочу с помощью преобразования этого массива сделать float и double массивы не создавая при этом 3 массивов разных типов данных. Как это можно реализовать?
0
|
30.06.2018, 23:34 | |
Ответы с готовыми решениями:
13
Изменение двумерного массива элементов типа char Изменение типа массива Как присвоить значение одного из элементов массива типа char переменной типа int? Преобразование массива типа char в массив типа float |
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 19
|
|
30.06.2018, 23:40 [ТС] | 3 |
мне пишет значение типа float** нельзя присвоить сущность типа int**
0
|
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 19
|
|
30.06.2018, 23:46 [ТС] | 6 |
потому что в менюшки помимо создания массива есть еще кейсы с функциями которые работают с этим массивом, поэтому для указания аргумента в этих функциях мне и нужен массив созданных до менюшки
0
|
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 19
|
||||||
30.06.2018, 23:54 [ТС] | 8 | |||||
Добавлено через 49 секунд а из double в int можно привести?
0
|
19 / 10 / 5
Регистрация: 07.06.2018
Сообщений: 63
|
|
30.06.2018, 23:55 | 9 |
1
|
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 19
|
||||||
01.07.2018, 00:12 [ТС] | 11 | |||||
Стек мешает, но если бы мне нужно было просто прописать 3 массива под каждый тип данных, и чтобы создавался лишь один при выборе пользователем того или иного типа, то я бы сюда и не написал; мне нужно выделить память только под один массив и память выделялась бы до меню и с помощью приведений и литералов сделать из него 3 уже в самом меню, как-то так
Добавлено через 4 минуты
0
|
1375 / 519 / 72
Регистрация: 21.07.2015
Сообщений: 1,304
|
|
01.07.2018, 00:27 | 12 |
Еще раз: зачем выделять память до выбора типа данных? Если так хочется хранить все в одном указателе (опять же зачем?), то сделай обычный void* и с помощью static_cast приводи в нужном месте, только тебе еще тип нужно будет хранить.
1
|
0 / 0 / 0
Регистрация: 30.11.2017
Сообщений: 19
|
|
01.07.2018, 02:42 [ТС] | 13 |
проблему решил путем создания отдельной функции выделения памяти и отдельной функции дающей выбор типа данных пользователю, а также заменой интовой функции main на шаблон, всем спасибо за ответы
0
|
Комп_Оратор)
|
|
01.07.2018, 10:09 | 14 |
Понимание того, что нужно, это на 90 процентов понимание всего что нужно. Тогда, кто-то может дать остальные 10 процентов. Иначе никак.
Вам предложили отделить процесс выбора типа от процесса создания типа? Это не то что задано в вопросе, но это самый простой путь. Если пойти по вопросу буквально и сначала создавать тип, а потом использовать полиморфно, то это достаточно муторно. Самым общим типом является массив char . Его размер должен быть равен произведению самого большого типа и размера. Далее заполнение - placement new. Функции обращения чтения и записи по индексу - с приведением к нужному типу. И всё это строго инкапсулировать в обёртке с интерфейсом массива. То есть выполнимо. Но зачем?
0
|
01.07.2018, 10:09 | |
01.07.2018, 10:09 | |
Помогаю со студенческими работами здесь
14
Из элементов массива типа integer в -> строку типа string Сравнение массива типа string с числом типа double Сформировать массив типа bool из массива типа char Изменение структуры массива объектов (изменение ключей) Изменение типа Изменение типа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |