簡體   English   中英

實現類似std :: vector.back()的東西

[英]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());

最后,命名約定似乎有些怪異,也許將SceneLayer函數重命名為current_scenecurrent_layer

使用typedef簡化繁瑣的表達式! Typedef是為此目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM