Class A{
public:
int a;
vector<A> test;
};
Class B{
public:
B();
B(const B &rhs);
~B();
B & insertTest(A element,A element1) {
element.test.pushback(element1); //doesn't work
}
B & insertTest1(A element) {
test1.pushback(element);//works
};
private:
vector<A> test1;
};
我正在尝试向这两个向量插入元素。当我将元素插入到类B中的向量test1时,它可以工作。但是,在插入到A类中的向量之后,我无法获得值。
答案 0 :(得分:4)
它在两种情况下都有效,但是当您通过值element
向函数传递时,您只需将新元素插入此副本中,而不是插入到原始副本中。
离开功能后,您对副本所做的更改将消失。
答案 1 :(得分:3)
B & insertTest(A element,A element1); {element.test.pushback(element1);}
^
删除分号。
此外:
A & element, A & element1
代替A
不应该包含自己的矢量 - 你想在那里做什么?答案 2 :(得分:2)
您按值传递元素;你必须通过引用传递它们以进行任何可见的更改。另外,为什么要将函数声明为返回对B
的引用而不实际返回任何内容?除此之外,语法完全错误,代码甚至不应该编译。
答案 3 :(得分:1)
以下不起作用,因为元素是按值传递的
B & insertTest(A element,A element1) {
element.test.push_back(element1); //doesn't work
}
以下是有效的,因为您正在修改test1,它是此
的成员 B & insertTest1(A element) {
test1.push_back(element);//works
};
如果您希望第一个工作,请按引用传递元素,如下所示:
B & insertTest(A& element,A element1) {
element.test.push_back(element1);
}