1

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

这是示例:

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

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

   myfunc ( vector<mystruct> &mystry );

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

4

3 回答 3

3

使用范围运算符::

std::vector<A::mystruct>
于 2013-04-05T12:59:37.970 回答
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 就可以了。

于 2013-04-05T13:03:46.173 回答
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);
}
于 2013-04-05T13:12:02.347 回答