如何通过引用将TListstring传递给一个类?

时间:2016-01-20 20:50:27

标签: c++ parameters reference

档案.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()

2 个答案:

答案 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没有问题可以通过引用传递。