![](/img/trans.png)
[英]Why is it allowed to have a class that has an incomplete type static member of itself?
[英]Incomplete type is not allowed on static member
我正在重用旧项目中的类,它具有以下内容:
头文件
// 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)
我该如何解决呢? 谢谢
为什么这以前起作用?
不可能说。
我该如何解决呢?
在变量定义之前,包括从源文件定义TimeZoneInfo
的标头。
“不完整”表示已声明但未定义类型,因此只能以有限的方式使用。 具体来说,您可以声明一个不完整类型的变量,但不能定义它。
可以使用静态的不完整类型成员。 但是,应在定义静态成员之前定义其类型,即
TimeZoneInfo DateTime::m_Info; // class TimeZoneInfo must be fully defined before this line
相关: 不完整类型的静态字段-是否合法?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.