从类返回类实例

时间:2015-03-28 14:34:26

标签: c++

我有这段代码,我想从另一个类填充我的字符串向量

class A
{
  public:
    B foo(const string & name) const;
}

class B
{
  public:
    void Add(const string & name);
    vector<string> list;
}

void B::Add(const string & name)
{
   list.push_back(name);
}

B A::foo(const string & name) const
{
  B tmp;
  tmp.Add(name);
  return tmp;
}

我知道这不起作用因为tmp被破坏了,但我不知道如何解决它,我应该在foo()中返回指向tmp的指针吗?

1 个答案:

答案 0 :(得分:4)

  

我知道这不起作用,因为tmp被破坏了

复制之后将其销毁,以提供函数的返回值,因此没有问题。如果您返回指向局部变量的指针或引用,则会出现问题;但你不是那样做的。

  

我不知道如何解决它

它没有被打破,所以没有什么可以解决的。

  

我应该返回指向tmp

的指针

不,这会引入您正在考虑的问题。按值返回可以避免这个问题。