注意:由于种种原因,我无法发布完整的来源,但我会给出基本的想法。
class Whatever{
private:
std::vector<int> vector;
public:
std::vector<int> getVector() {
return vector;
}
如果我要调用getVector(),之前填充的向量将为空。 e.g。
whatever Class;
std::cout << "\n\n" << Class.getVector().size();
这将返回 0 。
有什么建议吗?
注意:原始向量确实已填满,但内容不会转移到新向量。
答案 0 :(得分:3)
f我要调用getVector(),之前填充的矢量就是 空。
无论什么阶级; std :: cout&lt;&lt; &#34; \ n \ n&#34; &LT;&LT; Class.getVector()大小();这会返回0.有什么建议吗?
你忘了填充矢量。
class Whatever{
private:
std::vector<int> v_;
public:
Whatever ( int n) : v_( n) {}
std::vector<int>& getVector() {
^^^ // most probably you want to avoid copy
return v_;
}
};
你原来的定义:
std::vector<int> getVector() {
return vector;
}
将始终返回等于的向量。
你说:
注意:原始矢量确实被填充,但内容确实如此 不转移到新的载体。
我相信你是这样做的:
Whatever w;
std::vector<int> v = w.getVector();
v.push_back( 107);
//... etc
std::vector<int> v2 = w.getVector(); // empty