如何声明类的结构向量

How to declare a vector of structure of a class

本文关键字:结构 向量 声明 何声明      更新时间:2023-10-16

我有一个类,里面有一个结构。如何创建这种结构类型的向量?

以下是示例:

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

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

   myfunc ( vector<mystruct> &mystry );

所以我的问题是,我需要用结构向量来调用这个函数。我该如何申报?

使用作用域运算符:::

std::vector<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> &mystr);
}

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

当您声明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);
}