繁体   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