Форум программистов, компьютерный форум CyberForum.ru

variably modified type - C++

Восстановить пароль Регистрация
 
gl1234
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 4
05.04.2011, 22:08     variably modified type #1
Привет всем. Нужна помощь в решении проблемы с variably modified type в объявлении переменной по шаблону.
О чем в общем. Есть некая структура, которая содержит размер строки ( char[n] ), нужно обьявить переменную типа другой структуры с шаблоном типа.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//код не с программы, просто как пример.
//в коде some_struct содержится в vector в классе, но это, по моему, роли не играет.
struct some_struct {
unsigned int size;
};
 
template <typename TypeX>
struct common_struct {
TypeX val;
};
some_struct s;
s.size=10;
common_struct<char[(int)s.size]> x;
Но компилятор выкидывает ошибку.
Код
error: 'char [(((unsigned int)(((int)_переменная_ + -0x000000001)) + 1)]' is a variably modified type
error:   trying to instantiate 'template<class TypeX> struct common_struct'
error: invalid type in declaration before ';' token
Создание новой переменной, и записывание туда размера ничего не дает. Если создать переменную типа int x=3; а потом её подставить - все работает.
Перерыл интернет на подобные ошибки - ничего толкового не нашел, только http://stackoverflow.com/questions/3...-modified-type , где решения я не нашел. В общем ошибка понятна, невозможно создать переменную типа по шаблону со значением с переменной. Нужно как-то привести тип переменной к не variably modified type. К слову, эта переменная крутится в цикле, поэтому нужно её переприсваивать, или удалять.

Компилятор -
Код
gcc (gcc-4.5.2-1-mingw32)
g++ (gcc-c++-4.5.2-1-mingw32)
mingw32-make (make-3.82-5-mingw32)
Заранее спасибо за любое решение.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
05.04.2011, 22:15     variably modified type #2
gl1234, во-первых, при указании размера массивов необходима константа. Во-вторых, Вы лучше о стоящей перед Вами задаче расскажите, а то код приведенный выше, мягко говоря, внушает опасения.
gl1234
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 4
05.04.2011, 22:26  [ТС]     variably modified type #3
Задача описана как есть.
Код весь великоват.
Есть размер char[n] записанный в структуре, которая записана в массив в классе. Нудно создать переменную типа common_struct<char[n]> x; , где n - размер (как показано в примере).
Другого варианта реализации этого кода не может быть, есть как есть.
Можно как-то привести тип к const int, если она содержится в структуре / классе / массиве ? обычное приведение ((const int)var) не помогает.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
05.04.2011, 22:35     variably modified type #4
gl1234, что мешает вместо массива символов использовать std::string?
gl1234
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 4
05.04.2011, 22:42  [ТС]     variably modified type #5
это как-бы тип данных с базы char[1-255] (фикс. размер типа). Структура записывается в файл. Для записи используется FILE (хоть и на с++, но использую это, чтобы нормально записывать структуры без извратов). а std::string не представляю как можно записать через FILE в качестве параметра структуры.
Yandex
Объявления
05.04.2011, 22:42     variably modified type
Ответ Создать тему
Опции темы

Текущее время: 09:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru