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

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

Войти
Регистрация
Восстановить пароль
 
gl1234
0 / 0 / 0
Регистрация: 05.04.2011
Сообщений: 4
#1

variably modified type - C++

05.04.2011, 22:08. Просмотров 417. Ответов 4
Метки нет (Все метки)

Привет всем. Нужна помощь в решении проблемы с 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)
Заранее спасибо за любое решение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2011, 22:08     variably modified type
Посмотрите здесь:

Must use C++ for the type iostream. C++
C++ Ошибка argument of type "CGroup *" is incompatible with parameter of type "CGroup *"
value type C++
E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'Binary' C++
C++ Mix of type 'bool' and type 'float'
C++ Type name expected
Incomplete type used in nested type specifier - Итерация по списку аргументов C++
C++ Type name expected
C++ Undefined type
Could not convert variant of type (Null) into type (String) C++
Argument of type char is incompatible with parameter of type char * C++
Db does not a name type C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2299 / 1669 / 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++
2299 / 1669 / 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
Ответ Создать тему
Опции темы

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