静态成员不允许使用不完整类型

时间:2015-05-27 15:23:48

标签: c++ static-members incomplete-type

我正在重用旧项目中的一个类,它具有以下内容:

标题文件

// forward class declarations
class TimeZoneInfo;

class DateTime
{
public:
    // constructors
    DateTime();
    static TimeZoneInfo  m_Info;
};

正文档

TimeZoneInfo DateTime::m_Info; <-- Error Here
DateTime::DateTime()
{}
//blah blah

当我去构建这个时,我得到错误:

错误:不允许使用不完整类型:

为什么之前有效? (我现在使用的是Visual Studio 2013)

我该如何解决这个问题?感谢

2 个答案:

答案 0 :(得分:4)

  

为什么之前有效?

不可能说。

  

我该如何解决这个问题?

在变量定义之前,在源文件中包含定义TimeZoneInfo的标头。

&#34;不完全&#34;表示该类型已声明但未定义,因此只能以有限的方式使用。具体来说,您可以声明一个不完整类型的变量,但不能定义它。

答案 1 :(得分:1)

可以使用静态不完整类型成员。但是,它的类型应该在之前定义静态成员的定义,即

TimeZoneInfo DateTime::m_Info; // class TimeZoneInfo  must be fully defined before this line

相关:Static field of an incomplete type - is it legal?