FIX:模板类的用户定义类型数组成员出现错误 C2233

本文已归档。它按“原样”提供,并且不再更新。
症状
如果您编译的模板类包含的数据成员是另一个模板类的数组,而第二个模板类包含的数据成员也是一个数组,而且这两个数组的大小都依赖于模板参数,则可能会出现以下错误:
error C2233:'<Unknown>' :arrays of objects containing zero-size arrays are illegal
解决方案
请使用指针而不是数组。在构造函数中为数组分配空间,在析构函数中解除分配数组的空间。
状态
Microsoft 已经确认这是本文开头列出的 Microsoft 产品中的错误。

在 Microsoft Visual Studio 6.0 Service Pack 5 (SP5) 中,已经修复了此错误。

要下载 Service Pack 5,请参阅以下 Microsoft Web 站点中的 Visual Studio 产品更新页:
更多信息

重现问题的步骤

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];};				
属性

文章 ID:216977 - 上次审阅时间:02/23/2014 11:07:52 - 修订版本: 5.4

Microsoft Visual C++ 6.0 企业版, Microsoft Visual C++ 6.0 专业版, Microsoft Visual C++, 32-bit Learning Edition 6.0

  • kbnosurvey kbarchive kbbug kbfix kbvc600fix kbqfe kbcpponly kbcompiler kbhotfixserver KB216977
反馈