我有一個攝像頭類,它設置了兩個變量 - 投影和視圖矩陣。我可以將這些外部參數包含在任何想訪問變量的頭文件中,或者我可以爲它們設置一個getter /將這些變量的引用傳遞給任何需要它們的東西。這僅僅是一種優先選擇的情況,還是以特定的方式進行實際的收益?使用extern和使用getter的區別?
0
A
回答
2
getter的優點是不會讓外部代碼寫入變量(例如指針數組無法遞增)。
否則,它在功能上是相同的,特別是如果它是供您自己使用的話。
+0
哦,好的,謝謝。我認爲即使某些東西是外部的,你仍然需要實際#包含它使用它的文件嗎? – SirYakalot
+1
是的,其他文件需要知道變量存在。您需要在頭文件中將變量聲明爲'extern',並將其作爲普通變量(不包括extern)來實現此變量。 – wormsparty
1
這是更多的封裝問題。如果您的相機類是這兩個矩陣的唯一持有者,那麼通過獲取者而不是公共屬性來提供它們是明智的。
例如,這將允許您對攝像機進行子類化併爲您的視圖和投影矩陣創建其他方法。
相關問題
- 1. 使用和extern有什麼區別?
- 2. 使用getter和setter
- 3. Rust中的extern fn和extern「C」fn有什麼區別?
- 4. 如何在nuget中使用extern別名
- 5. 使用Object.defineProperty使用getter和setter
- 6. 使用lambda getter和setter
- 7. 使用java.util.logging和Log4j Logger的區別
- 8. 使用@OneToMany和@ManyToMany之間的區別
- 9. 使用gradlew和gradle的區別
- 10. 使用Trace和TraceSource之間的區別
- 11. 使用IHttpHandler和webservice的區別
- 12. 使用Janrain和OAuth的區別?
- 13. 使用stripslashes()區別
- 14. extern int a之間的區別; extern int a = 42;
- 15. 使用`extern`用typedef名
- 16. 使用「的extern」在C
- 17. 使用帶GPU的Halide extern
- 18. 使用的extern結構
- 19. 使用int [] []和int [,]有什麼區別?
- 20. 使用WorkflowInvoker和WorkflowApplication有什麼區別?
- 21. 有什麼區別使用=和:在javascript
- 22. 使用和不使用mpirun運行程序之間的區別
- 23. 使用和不使用SQL函數執行計算的區別
- 24. 使用XMLRoot/XMLElement和使用Serializable()屬性(在c#中)的區別
- 25. 使用MockMvc與SpringBootTest和使用WebMvcTest之間的區別
- 26. 在方法參數中使用和不使用@modelAttribute的區別
- 27. 使用「Threadstart」和不使用「Threadstart」的區別是什麼
- 28. 在java中使用ArrayList的getter和setter
- 29. 何時使用extern「C」?
- 30. 在C++中使用extern
通過extern,你的意思是公開的,你真的寫過一個類來管理兩個全局變量嗎? –