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

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 に答える