将元素插入到不同类的向量中
Inserting element into vector from different classes
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 类的矢量测试1 时,它有效。但是,插入到 A 类向量后我无法获得值。
它在这两种情况下都有效,但是当您按值将element
传递给函数时,您只需将新元素插入到此副本中,而不是原始元素中。
离开函数后,您对副本所做的更改将立即消失。
B & insertTest(A element,A element1); {element.test.pushback(element1);}
^
删除该分号。
也:
- 您
- 正在修改副本,因为您按值传递 - 改为传递
A & element, A & element1
- 类
A
不应该真正包含自身的向量 - 你想在那里做什么? - 您没有发布真实代码
按值传递元素;必须通过引用传递元素才能进行任何可见的更改。另外,为什么将函数声明为返回对B
的引用而不实际返回任何内容?除此之外,语法是完全错误的,代码甚至不应该编译。
以下内容不起作用,因为元素是按值传递的
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);
}
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- C++不同类别的向量
- 不同类的向量
- 如何设置一个 std::vector 与另一个,其中两个是不同类的向量?
- 如何在具有相同基类的两个不同类中获取向量
- 如何在类中用不同类的对象填充向量
- 指向相同类类型设计可行性的指针向量
- 来自不同类的对象向量
- 将元素插入到不同类的向量中
- 无法使用 "Friend" 到达不同类中的向量