[英]Implementing something like std::vector.back()
我想實現這樣的事情,因為我的應用程序被划分為場景,這變得有些混亂:
glEngine.scene[glEngine.current.currentScene].layer[glEngine.scene[glEngine.current.currentScene].currentLayer].Shapes.push_back(CGlShape());
相反,我希望能夠執行以下操作:
glEngine.Scene().layer[glEngine.Scene().currentLayer].Shapes.push_back(CGlShape());
我該如何做這樣的功能?
謝謝
我們不知道您的類是什么,而只是創建一個函數:
struct glEngine
{
// ...
scene_type& Scene()
{
return scene[current.currentScene];
}
};
您還可以對Scene
執行此操作,返回當前圖層:
struct scene_type
{
// ...
layer_type& Layer()
{
return layer[current.currentScene];
}
};
給予:
glEngine.Scene().Layer().Shapes.push_back(CGlShape());
您可能還考慮僅出於可讀性考慮而將行拆分:
scene_type& scene = glEngine.Scene();
layer_type& layer = scene.Layer();
layer.Shapes.push_back(CGlShape());
最后,命名約定似乎有些怪異,也許將Scene
和Layer
函數重命名為current_scene
和current_layer
。
使用typedef簡化繁瑣的表達式! Typedef是為此目的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.