2017-02-22 127 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