有沒有辦法知道我的對象是活着的,除了在類中聲明靜態私有成員,並在構造函數中增加它,在析構函數中遞減它。提前致謝。如何知道我的對象是否存在於C++中?
回答
您還可以通過使用shared_ptr/weak_ptr的STL非侵入式地對您的類執行此操作。
stl::shared_ptr<YourClass> p = stl::make_shared(...); // holds a strong reference to your type
stl::weak_ptr<YourClass> wp(p);
cout << wp.use_count(); // "1"
p.reset();
cout << wp.use_count(); // "0"
如果有問題的代碼存在一個非靜態方法裏面,那麼你的目標是通過定義「活着」 - 只要你不標新立異像一個方法中刪除。
如果你是這樣做(不推薦,除非你真的知道自己在做什麼),然後確保你NULL
出指針隨即並始終確保比較this
對NULL
,檢查是否你的對象是「活着的」。
如果有人刪除它,不回答如何檢查對象是否處於活動狀態。 –
如果您無法修改原始類,您自己的答案也是不完整的,但是我沒有降低它的效果,因爲它對於特定情況仍然有用。 – Spire
我相信他可以指定原始類別,否則這個問題就沒有意義了。 –
- 1. 如何知道目標c中是否存在對象用ARC
- 2. 如何知道android中JSON中是否存在對象值?
- 3. 如何知道關係中的對象是否存在於數據庫中
- 4. c#:如何知道'用戶帳戶'是否存在於Windows?
- 5. 。我怎麼知道對象內是否存在字段?
- 6. C++我想知道對象
- 7. 我如何知道Sound對象是否正在播放?
- 8. 如何知道數據是否存在於url中不是
- 9. 如何知道「.target2」是否應用於jQuery對象?
- 10. 我如何知道數組中的元素是否存在?
- 11. 我如何知道對象是否可以被弱引用?
- 12. 在Python中,如何知道對象是否可以比較?
- 13. 如何知道對象在AS3中是否動態
- 14. 如何知道json對象是否包含json對象
- 15. 如何知道文件是否存在?
- 16. 如何知道是否存在NSUserDefault?
- 17. 如何知道是否正在對angular2
- 18. 通知中心 - 如何知道是否存在「未讀」通知?
- 19. 如何知道python中的對象是否被刪除
- 20. 如何知道ArrayList中的指定對象是否爲空?
- 21. 如何知道GWT和IE8中的RPC對象是否「太大」?
- 22. 如何知道我是否在回傳?
- 23. 我怎麼知道一個對象是否是唯一的
- 24. 我怎麼能檢查對象是否存在於C++
- 25. 如何快速知道對象是否從NSArray中的對象引用?
- 26. Laravel - 如何知道屬性是否存在於相關表
- 27. 知道對象是否爲空Angularjs
- 28. 如何知道我的圖像是否存在於服務器上? (PHP)
- 29. C#對象是否知道更具體的類的類型?
- 30. 如何知道一個值是否是一個luasocket對象?
你是什麼意思「活着?」我認爲對此的回答是這樣的,「呼叫者知道是否因呼叫者正在控制它而活着」。你怎麼能*不知道它是否「活着」?你對此有何問題? – tenfour
如果您的對象已被破壞,則該對象的任何方法都不應運行。如果在銷燬之後調用方法,那麼在程序中某個地方會出現錯誤* else *。你的對象是活着的,或者它不存在。 –
太糟糕了「不」沒有足夠的字符是一個正確的答案。 –