我有这段代码,我想从另一个类填充我的字符串向量
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的指针吗?
答案 0 :(得分:4)
我知道这不起作用,因为tmp被破坏了
在复制之后将其销毁,以提供函数的返回值,因此没有问题。如果您返回指向局部变量的指针或引用,则会出现问题;但你不是那样做的。
我不知道如何解决它
它没有被打破,所以没有什么可以解决的。
我应该返回指向
的指针tmp
不,这会引入您正在考虑的问题。按值返回可以避免这个问题。