档案.h:
class A{
public:
TStringList &tsl;
A(TStringList &arg) : tsl(arg) {}
}
void foo(A& dto);
文件cpp:
void foo(A& dto);
{
dto.tsl.String[0] = "AAA";
}
使用:
TStringList *a= new TStringList();
......(some code )......
A dtoArg=A(*a);
a.String[0]="BBB";
foo(dtoArg);
Printf("first element now is %s",a.String[0] );
即使项目编译并且在运行时似乎都很好,行为也不是预期的行为。输出为BBB
而非预期的AAA
。这意味着TStrngList
按值传递,而不是通过引用传递。
那么,如何通过引用传递TString
列表。传递给函数TSringList
时,我不会复制foo()
。
答案 0 :(得分:0)
我不知道你的TStringList是如何定义的,但当我用模拟类替换它时,如
struct TStringList {
TStringList() { String.resize(10); }
vector<string> String;
};
并将您的拼写错误更正为a.String[0]
至a->String[0]
,然后就可以了。
TStringList的返回类型operator []
是什么?
我相信......(some code )......
可能值得挖掘?!
请确保下次提交完整且可重现的测试用例。
答案 1 :(得分:0)
对不起, 一切正常。错误发生在我的单元测试中,而不是在测试代码中..... 因此,可以关闭或删除此主题。 TStringList没有问题可以通过引用传递。