Появление "ошибки C2233:" <unknown>": не допускаются массивы объектов, содержащие массивы с нулевой размер" сообщение об ошибке в Visual C++, при компиляции класса шаблона, который содержит элемент данных</unknown>

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:216977
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Проблема
При компиляции класса шаблона, содержащего элемент данных, который является массивом, содержащим класс второго шаблона и второй класс содержит член данных, который является массивом, а размер обоих массивов зависит от параметра шаблона, может появиться следующее сообщение об ошибке:
Ошибка C2233: "<unknown>": массивы объектов, содержащий нулевой размер массива не допускаются</unknown>
Решение
Вместо массива с помощью указателя. Выделить место для массива в конструкторе и освободить место для массива в деструкторе.
Статус
Данное поведение является подтвержденной ошибкой продуктов Майкрософт, перечисленных в начале данной статьи..

Эта ошибка была исправлена в Visual Studio 6.0 пакета обновления 5 (SP5).

Чтобы загрузить пакет обновления 5, см. на странице обновления в Visual Studio по следующему веб-узлу на:http://support.Microsoft.com/kb/280367
Дополнительная информация

Действия для воспроизведения поведения:

template <int k>class A{    char x[k];};template <int h, int j>class B  {     A<h> y[j];};				

Временное решение

template <int k>class A{    char *x;    A() {        x = new char[k];    }    ~A() {        delete[] x;    }};template <int h, int j>class B  {     A<h> y[j];};				

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 216977 — последний просмотр: 02/23/2014 01:15:17 — редакция: 2.0

  • kbnosurvey kbarchive kbqfe kbhotfixserver kbbug kbcompiler kbcpponly kbfix kbvc600fix kbmt KB216977 KbMtru
Отзывы и предложения