我有一個有對象向量的類。我需要做什麼才能返回其中一個對象並在課堂外進行更改,以保持更改?是否有可能與常規指針?有沒有標準的程序? (是的,我的背景是在Java中。)C++返回對象
Q
C++返回對象
2
A
回答
0
如果你有std :: vector,其中A是你的類,你可以返回一個std :: vector :: iterator。
class A {
public: int a;
};
std::vector<A> v = ...;
std::vector<A>::iterator it = v.begin(); // access to the first element
it = v.begin() + 5; // access to the 5-th element (vector can do random access)
// 'it' can now be used elsewhere
it->a = 0; // changes are reflected in the object inside the vector
*it = A(); // changes the object hold by the vector
請注意,如果矢量改變,那麼迭代器可能失效!
1
如果矢量持有指向對象的指針,則從矢量(或更準確地說指向的對象)返回的對象之一的任何更改都會影響矢量中的實例。
4
你的問題是有點模糊,但這裏有一個例子:
class foo
{
public:
foo()
{
vec.resize(100);
}
// normally would be operator[]
int& get(size_t pIndex)
{ // the return type is a reference. think of it as an alias
return vec[pIndex]; // now the return value is an alias to this value
}
private:
std::vector<int> vec;
};
foo f;
f.get(10) = 5;
// f.get(10) returned an alias to f.vec[10], so this is equivalent to
// f.vec[10] = 5
的常見問題有一個很好的section on references。
此外,如果您是C++新手,請不要嘗試使用在線資源進行學習。如果你還沒有一本書,you should,他們確實是學習這門語言的唯一好方法。
0
您需要將參考或指針返回給對象。
type &getref(); // "type &" is a reference
type *getptr(); // "type *" is a pointer
調用者將有權訪問基礎對象。
但是,你需要確保對象不移動(如果一個向量必須增長的話,它可能會產生)。你可能想考慮使用std :: list來代替。
相關問題
- 1. c + +返回對象
- 2. C++類,對象並返回
- 3. 在C++中返回對象
- 4. 返回對象類型C
- 5. C#.NET WebService返回對象
- 6. C++返回一個對象
- 7. C#返回私人對象
- 8. 返回不返回對象
- 9. 返回對象
- 10. .text()返回對象對象
- 11. JSON.stringify返回對象對象
- 12. JSON返回[對象對象]
- 13. AngularFire2返回[對象對象]
- 14. 在C#.NET中使用C++中的COM對象返回對象[]
- 15. 方法返回SBJson Objective-C的對象
- 16. 返回C中的對象(或結構)++
- 17. 目標C:從方法返回對象
- 18. C++返回對象,這可能嗎?
- 19. HTTP POST與JSON對象返回c#
- 20. 函數返回「這」對象在C++
- 21. C++獲取到返回的對象
- 22. C#的Web API返回對象列表
- 23. 用C++返回當前對象(* this)?
- 24. 將Java對象數組返回給C++
- 25. C#序列化對象只返回ID
- 26. C++返回參考新對象
- 27. C++對象 - 返回一個指針
- 28. C++返回一個對象複製
- 29. C#等待任務組返回對象
- 30. 反序列化返回null對象c#
你指的是stl向量?請提供您想要的僞代碼示例。 – sramij 2015-02-23 07:20:10