0

我正在构建一个小型 C++ 程序,并在一个类中实现自定义运算符。我也在使用 STL 向量。

但是我一开始就卡住了。这是我的接口类:

class test {

    vector<string> v;
    public:
         vector<string>& operator~();      
};

这是实现:

vector< string>& test::operator~(){

    return v;
}

我想返回对向量的引用,所以在主程序中我可以做这样的事情

int main(){

    test A;
    vector<string> c;
    c.push_back("test");
    ~A=c;
//i want to do it so the vector inside the class takes the value test,thats why i need reference

}

更新

该程序有效,但它不返回对该类属性的引用,例如:

如果我有这样的事情:

int main(){

       test A;
       A.v.push_back("bla");
       vector<string> c;
       c=~A;
      //This works, but if i want to change value of vector A to another vector declared in main
       vector<string> d;
       d.push_back("blabla");
       ~A=d;
       //the value of the A.v is not changed! Thats why i need a reference to A.v
  }
4

1 回答 1

0

当你在做的时候~A = d,它和A.v = d(如果v是公开的)是一样的。

它不会v用新对象交换旧对象d,它只会用 的内容的A.v副本替换 的内容d,请参阅有关 的更多信息vector::operator=

class test {
    vector<string> v;
  public:
    test() {
        v.push_back("Hello");
    }

    void print() {
        for(vector<string>::iterator it=v.begin(); it!=v.end(); ++it) {
            cout << *it;
        }
        cout << endl;
    }

    vector<string>& operator~() {
        return v;
    }      
};

int main(){
    test A;
    A.print();
    vector<string> c;
    c.push_back("world");
    ~A = c;
    A.print();
}

这按预期输出(如您在此处看到的):

Hello
world
于 2013-05-22T09:13:26.887 回答