Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> variably modified type 
:(
    Опции темы
GaoLong
Дата 5.4.2011, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 11.6.2008

Репутация: нет
Всего: нет



Привет всем. Нужна помощь в решении проблемы с variably modified type в объявлении переменной по шаблону.
О чем в общем. Есть некая структура, которая содержит размер строки ( char[n] ), нужно обьявить переменную типа другой структуры с шаблоном типа. 
Код

//код не с программы, просто как пример.
//в коде 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/3639476...y-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)


Заранее спасибо за любое решение.
PM   Вверх
mes
Дата 5.4.2011, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



size должен быть константой compile time.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.