我正在构建一个小型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
}
答案 0 :(得分:0)
当您执行~A = d
时,它与A.v = d
相同(如果v
是公开的)。
它不会将旧对象v
与新对象d
交换,它只会将A.v
的内容替换为d
内容的副本,请参阅more information about 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();
}
按预期输出(如您所见here):
Hello
world