2013-09-29 75 views
0

我的代碼如下C++不具有類類型

#include <vector> 
using namespace std; 
... 

class A { 
    NEW_TYPE a; 
    ... 
    public: 
    typedef vector<int> NEW_TYPE; 
    ... 
} 

錯誤說「NEW_TYPE」沒有指定類型

有誰知道出了什麼問題?

感謝

+0

您在定義之前使用它。 – us2012

+0

只需在類定義之前添加聲明即可。它不一定需要在類範圍內。 – Ares

+0

@Comrade這似乎不是很好的建議。讓它在類範圍之外的語義是完全不同的。首先,它不必要地污染全局命名空間,而且,在很多情況下,類模板中的typedef取決於模板參數。 – us2012

回答

3

一般來說,在C++中的名字僅適用於使用後,他們一直在宣稱:

typedef int foo; 
foo x = 1;  // OK 

bar y = 2;  // Error 
typedef int bar; // too late 

這同樣適用於你的班級。移動typedef:

class A 
{ 
public: 
    typedef std::vector<int> NEW_TYPE; 
private: 
    NEW_TYPE a; 
    // ... 
public: 
    // ... 
}; 
+0

所以在我的情況下,我必須移動整個公共部分? –

+0

@ user1464870:不,只是typedef。我添加了代碼。 (順便說一下,如果你不需要公開它們,typedefs也可以是私有的。) –

+0

@ user1464870:你可以在任何一個類中擁有儘可能多的public/protected/private部分。雖然它並不總是很漂亮。 – SigTerm

相關問題