С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Fobes
16 / 16 / 2
Регистрация: 19.09.2012
Сообщений: 212
#1

Приведение типов, возможно ли такое - C++

13.01.2016, 22:43. Просмотров 180. Ответов 2
Метки нет (Все метки)

Всем доброго времени суток... Не знаю как правильно спросить то что я хочу, но попробую объяснить на примере)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
u_char *packet; //массив с данными
 
struct test_header
{
        u_int8_t    start_test;
        u_int8_t    length_test;
        u_int8_t    data[12];
}
 
test_header*        test_hdr;
 
test_hdr = (test_header*)packet;
 
packet += sizeof(test_header);
Собственно простой код, который работает без каких либо ошибок, но вот столкнулся с проблемкой, размерность массива data зависит от предыдущего параметра length_test, т.е. надо как-то так, u_int8_t data[length_test], но это ясно дело не скомпилируется) Пробовал с динамическим выделением памяти побаловаться, но моих знаний маловато чтобы самому дойти) Не подскажите, как быть ? как решить мою задачку и можно ли это вообще ?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2016, 22:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Приведение типов, возможно ли такое (C++):

Приведение типов - C++
Есть ли какая-нибудь разница в следующих выражениях: float a = 123.4f и float a = (float)123.4

Приведение типов - C++
Есть задача создать список с объектами у которых разные классы, но один базовый предок. Потом нужно перебрать список и если объект одного...

Приведение типов - C++
Чем отличается type(x) от (type) x?

Приведение типов - C++
Доброго времени суток. Пусть имеются две структуры struct Student { string FirstName; string LastName; int year;

Приведение типов - C++
Как привести наследника ко второму родителю? class Parent1 { public: int a; int b; int c; }; class Parent2

Приведение типов - C++
Добрый вечер! Реализовываю явное и не явное приведение типов. Есть два класса, сепаративных, A и B. Реализацию явного преобразования...

2
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
13.01.2016, 23:03 #2
Fobes, случайно не это нужно?
0
nonedark2008
934 / 673 / 148
Регистрация: 28.07.2012
Сообщений: 1,838
14.01.2016, 00:06 #3
Fobes, сделай две функции:
Первая преобразует объект test_header в массив байт, вторая - обратно.
Собственно в правильном объекте test_header под поле data будет динамически выделено length_test байт.
Первая функция будет принимать указатель на массив байт, куда нужно записать результат, и будет записывать 1 байт start_test, 1 байт length_test и length_test байт из динамического массива data.
Вторая функция тоже принимает указатель на массив и читает первый байт start_test, второй байт length_test, динамически выделяет length_test байт под массив data и читает туда еще length_test байт.

От динамического выделения памяти можно попробовать отказаться в пользу статического, т.к. макс значение length_test = 255. Массив получается не слишком большой, но логику двух вышеописанных функций лучше оставить прежней.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2016, 00:06
Привет! Вот еще темы с ответами:

Приведение типов - C++
Уважаемые программеры, ПОМОГИТЕ!!! Нужно (мне) реализовать шаблонную функцию для приведения типов. Пример: newType_cast<T>(“123”); ...

Приведение типов - C++
Доброго времени суток. Данный кусок кода выделяет целую часть. Потом, вычитая из исходного числа целую часть, получаем дробную. Почему...

приведение типов - C++
Объясните, пожалуйста, почему возникает такая ошибка: error C2666: 'operator *' : 4 overloads have similar conversions ? Из-за того,...

Приведение типов - C++
Доброго времени суток. Есть вопрос. Допустим: class Base { ..... } class Derived:public Base{ .... }


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.