[英]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.