如何声明一个类的结构向量

时间:2013-04-05 12:58:07

标签: c++ oop

我有一个有结构的类。如何创建此结构类型的向量?

以下是示例:

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

现在在这个类“A”中有一个函数如下。

   myfunc ( vector<mystruct> &mystry );

所以我的问题是我需要用结构向量来调用这个函数。我怎么能宣布这个?

3 个答案:

答案 0 :(得分:3)

使用范围运算符::

std::vector<A::mystruct>

答案 1 :(得分: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);
}

只要你在mystruct之后声明myfunc就可以了。

答案 2 :(得分: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);
}