2015-05-27 2 views
0

Я повторно использовать класс из старого проекта и имеет следующее:Неполное типа не допускается статический член

Заголовочный файл

// forward class declarations 
class TimeZoneInfo; 

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

File Body

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

Когда я иду, чтобы построить это, я получаю ошибку:

Ошибки: Неполный тип не допускаются:

Почему это работает прежде? (Я использую Visual Studio 2013)

И как я могу это решить? Thanks

+0

Это не было. –

ответ

4

Why was this working before?

Невозможно сказать.

And how can I solve this?

Включить заголовок, который определяет TimeZoneInfo из исходного файла, перед определением переменной.

«Неполный» означает, что тип был объявлен, но не определен, поэтому его можно использовать только ограниченным образом. В частности, вы можете объявить переменную неполного типа, но не можете ее определить.

1

Это нормально, если у вас есть статический незавершенный тип. Тем не менее, его тип должен быть определен , прежде чем определение статического члена, т.е.

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

Связанные: Static field of an incomplete type - is it legal?