1
我遇到了一些向量返回值为空的问题。以下是基本设置:向量返回空C++
//Foo.h
struct Foo{
int n;
double vals[2];
};
//MyClass.h
class MyClass{
private:
std::vector<Foo> classVector;
public:
std::vector<Foo> getPair(int i1, int i2);
};
//MyClass.cpp
std::vector<Foo> MyClass::getPair(int i1, int i2)
{
std::vector<Foo> toReturn(2);
toReturn[0] = classVector[i1 - 1];
toReturn[1] = classVector[i2 - 1];
return toReturn;
}
classVector是一个已经初始化并且包含数据的向量。我基本上只是试图从该向量中获取两个值,并使用此函数返回它们。但是,当我调用返回值时,在调试模式下返回时,大小将重置为零,并且已复制过的元素(我在返回调用之前检查过)不再位于向量中。
我有一种感觉,它必须做一个浅拷贝被传回来。我尝试为Foo创建自己的拷贝构造函数,但是当它没有解决问题时我删除了它。
'返回的std ::矢量(classVector.begin(),classVector.begin()+ 2);' –
Borgleader
2014-12-03 21:39:34
@Borgleader坦率地说,'返回make_pair (...' – 2014-12-03 21:40:02
我会尝试make_pair。另一个建议不起作用,因为元素不一定是按顺序排列的 – ewpcasey 2014-12-03 21:41:27