2013-04-05 40 views
1

我有一个具有结构的类。我如何创建这种结构类型的向量?如何声明一个类的结构向量

这里是例如:

class A { 
public: 
    struct mystruct { 
     mystruct (int _label, double _dist) : label(_label), dist(_dist) {} 
     int label; 
     double dist; 
    }; 
} 

现在,在这个类 “A” 有如下的功能。

myfunc (vector<mystruct> &mystry); 

所以我的问题是我需要用结构向量调用此函数。我该如何申报?如你,你应该MYSTRUCT罚款后声明MYFUNC

std::vector<A::mystruct> 
+0

你必须包含'struct'所在的所有命名空间和类作用域。 – andre 2013-04-05 13:02:44

回答

3

使用范围操作::

+0

感谢您的回复。我创建了一个向量并将其传递给函数。我收到错误“文件无法打开写入!” – 2vision2 2013-04-05 13:35:03

+0

@ 2vision2该错误与您使用该矢量完全无关。你应该把它作为一个单独的问题发布。 – 2013-04-05 13:57:53

1
class A 
{ 
public: 
    struct mystruct 
    { 
     mystruct (int _label, double _dist) : label (_label), dist (_dist) {} 
     int label; 
     double dist; 
    }; 

    void myfunc(std::vector<mystruct> &mystr); 
} 

只要:

1

当你声明 A的方法,mystruct已经在范围,所以你可以使用它没有资格:

class A { 
public: 
    struct mystruct { 
     mystruct (int _label, double _dist) : label(_label), dist(_dist) {} 
     int label; 
     double dist; 
    }; 

    void myfunc(std::vector<mystruct> &); 
} 

但是当你调用它,你呼叫参数的类型取决于什么你在哪里:

void free_function() { 
    A a; 
    std::vector<A::mystruct> arg; 
    a.myfunc(arg); 
} 

void A::another_method() { 
    std::vector<mystruct> arg; 
    this->myfunc(arg); 
} 
+0

然而,在类内部使用这个指针来调用成员函数是相当无用的。只需使用:myfunc(arg)。 – David 2013-04-05 13:14:26

+0

它没有任何东西,但有时阅读更清晰。在这里,我想强调自由函数和方法之间的对称性。 – Useless 2013-04-05 13:15:37