2013-04-15 38 views
2

我得到這個錯誤時,嘗試這樣做允許嗎?不完整的類型沒有在結構構造

+3

你不想在這裏使用'new'。 – juanchopanza

+2

很多都是錯誤的,包括你似乎混淆了Java和C++的事實。請參閱NPE關於如何正確*做你想做的事情的答案。 –

+0

@juanchopanza可能錯過了格式化/複製/粘貼:) – sarat

回答

7

移動初始化出類主體的:

struct VertexStatus 
{ 
    ... 
    static VertexStatus Discovered; // declaration 
    ... 
}; 

VertexStatus VertexStatus::Discovered(1); // definition (with initializer) 

如果該類是在頭文件中聲明,最後一行(定義)放入相應.cpp文件。

請注意,我已經刪除了new:它返回一個指針,並且此代碼中沒有涉及指針。

-2

VertexStatus的大小直到它被完全聲明後才知道,它沒有被定義在它自己的定義中。

而是初始化靜態變量的聲明之後,這樣的:

struct VertexStatus { 
    static VertexStatus Discovered; 
    // ... other stuff 
}; 

VertexStatus::Discovered = new VertexStatus(1); 

如果這是一個頭文件裏面,你需要把最後一行內它的相應的.cpp文件。

+2

'發現'不是一個指針 - 這個代碼是沒有意義的,也不會編譯。 –