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

文章翻译 文章翻译
文章编号: 216977 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

症状

如果您编译的模板类包含的数据成员是另一个模板类的数组,而第二个模板类包含的数据成员也是一个数组,而且这两个数组的大小都依赖于模板参数,则可能会出现以下错误:
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 产品更新页:
http://msdn2.microsoft.com/en-us/vstudio/aa718363.aspx

更多信息

重现问题的步骤

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 - 最后修改: 2014年2月23日 - 修订: 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
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com