2017-02-22 112 views
0

所以我有一個靜態的載體成員的類:靜態矢量成員變量

class Foo { 
// some private members 
public: 
static vector<Bar> MyVector; 
}; 

現在我真正使用它之前初始化MyVector:

std::vector<Bar> Foo::MyVector; 

然後我想這樣定義一個變量在主()中,但它似乎並不工作:

Foo::MyVector::size_type t; 

此替代方法確實有效,但看起來並不美觀(對我的眼睛s):

vector<Bar>::size_type t; 

什麼是我在這裏失蹤的基本概念?

編輯

主要的一點是,我要經常回來看看的MyVector宣佈爲矢量<酒吧>着手宣佈爲它SIZE_TYPE過嗎?

+4

你有沒有試過這個*以前更簡單*? 'std :: string s; s :: size_type n; // ???' –

+0

爲什麼它看起來不漂亮? –

+0

@OnurA。因爲我需要滾動到MyVector – Sourena

回答

7

這不是解決方法。 MyVector是對象。 vector<Bar>是類型。 size_typevector類中的typedef,不是成員變量。

+0

所以我需要回去看看在類中的Foo:MyVector的定義,然後繼續定義一個變量來存儲它的size_type? – Sourena

+0

@Sourena,不,通過編寫'vector :: size_type',您正在訪問此特定向量_type_的大小類型。 – SingerOfTheFall

+1

在C++ 11中,您可以使用decltype(Foo :: MyVector):: size_type –

0

size_type是在std::vector中聲明的類型。它是綁定到班級的,而不是個別的實例。此外,::運算符僅用於名稱空間和類。你不能在變量中使用它。

+0

感謝您的回答。我只是在想,是否可以從實例中「提取」typedef,而不回頭去看它的定義。 – Sourena