1

私がそのようなクラスを持っている場合(大まかな構文を許してください):

class Z{
public:
    void method1();
    void method2(vector<X>& v);
    void method3(vector<X>& v);

private:
    std::vector<X> myvec;
}

基本的に、myvecをmethod1()からmethod2()を介してmethod3()に渡し、そこで変更します。私の method1() が次のようになっている場合:

void Z::method1(){
    vector<X> v = z::myvec;    //What do I have to do with this line so that the changes
    method2(v);                //made to v in method3() are permanent and not lost once
}                              //method1() returns?


void Z::method2(vector<X>& v){
    method3(v);
}

//Modify vector<X> myvec
void Z::method3(vector<X>& v){
    v.push_back(<something>);
}

method1() が返されると、ベクトルに加えられた変更が永続的で失われないように、method3() のベクトルを変更するにはどうすればよいですか?

4

3 に答える 3

3

参照するだけvです:

vector<X>& v = myvec;

または単に自分自身を渡しmyvecます:

method2(myvec);
于 2013-10-02T20:03:40.720 に答える
2

method3 がクラスのメンバー データを直接使用できるようにしないのはなぜですか? それは完全に正常なことです。

void Z::method3(){
    myvec.push_back(<something>);
}

ただし、本当に自分のやり方でやりたい場合は(非常に特異なので、お勧めしません)、最初のコメント行を次のように置き換えます。

vector<X>& v = z::myvec; 
于 2013-10-02T20:05:18.573 に答える