[英]empty list when return from a function c++ encapsulated in object
我有一个在 C++ 中封装 std::list 的类
class A {
string toSelect;
list<CustomObject1> lst;
list<CustomObject2> lst1;
}
我有另一个类Process
,它在其中一个方法中返回对象 A 。
A Process::do() {
// ...
// ...
CustomObject1 cust = CustomObject1(para1,para2);
list<CustomObject1> c;
CustomObject2 cust2 = CustomObject2(para3,para4);
list<CustomObject2> c2;
c2.push_back(cust2);
c.push_back(cust)
return A("abc", c, c2);
然而,当我在 cpp 单元测试框架中进行单元测试时,列表中的内容立即变空。
namespace UnitTesting
{
TEST_CLASS(TestMethod)
{
public:
TEST_METHOD(TestDo) {
Process* process = new Process();
A a = process->do();
Assert::AreEqual(a.lst.size(),1) // a.lst is empty
}
}
如何以这种方式填充对象 A 内的列表?
编辑
啊
A(string toSelect, list<CustomObject1> custObjs,
list<CustomObject2> custObjs1)
A.cpp
A::A(string toSelect, list<CustomObject1> custObjs,
list<CustomObject2> custObjs1)
{
this->toSelect = toSelect;
this->custObjs = custObjs;
this->custObjs1 = custObjs;
}
这是 A 的完整定义。
通过声明list<CustomObject1> lst;
解决了这个问题list<CustomObject1> lst;
to a list<CustomObject*> *lst
其中*lst
是指向列表的指针,列表中的每个元素都是指向自定义对象的指针。 这样当我调用构造函数时
A::A(string toSelect, list<CustomObject1*> *custObjs,
list<CustomObject2*> *custObjs1)
{
this->toSelect = toSelect;
this->custObjs = custObjs;
this->custObjs1 = custObjs;
}
我正在分配属性custObjs
指向在 A::process() 方法中创建的列表。
不确定我是否必须为此手动清理。 有谁知道是否需要完成?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.