C ++我知道数组的长度,但是想知道是否有一种更简洁的方法来定义数组元素

时间:2013-04-11 00:48:50

标签: c++ arrays memory

我有以下内容:

Action* actions[];

在ActionBar类中。

我想在它的构造函数中做这样的事情:

actions = {
    new Action( new Image( gfx, "Images/ActionBar/Push001.png", 200, 200, TRUE ), 0, 200, 200, 200, 200 ),      
    new Action( new Image( gfx, "Images/ActionBar/Pull001.png", 200, 200, TRUE ), 1, 200, 200, 200, 200 )
};

最初我在做:

Action* actions[ 2 ];

然后在构造函数中:

actions[ 0 ] = new Action( new Image( gfx, "Images.....    
actions[ 1 ] = new Action( new Image( gfx, "Images.....

这样做的最佳方法是什么?所以最后我可以在我的游戏循环中执行类似

的操作
SomeFunctionIPassAnActionInto( actionBar->actions[ 0 ] );

编辑::略微改变了问题,我总是知道会有5个动作,所以如果我做了

Actions* actions [ 5 ]; 

我如何声明这样的数组元素:

actions = {
   new Action( "push" ),
   new Action( "pull" ),       
   new Action( "bla" ),
   new Action( "ble" ),       
   new Action( "blo" )
}

有点事

2 个答案:

答案 0 :(得分:0)

在C ++ 11中,您可以在 ctor-initializer 中初始化数组。

ActionBar::ActionBar()
    : actions {
        new Action( new Image( gfx, "Images/ActionBar/Push001.png", 200, 200, TRUE ), 0, 200, 200, 200, 200 ),      
        new Action( new Image( gfx, "Images/ActionBar/Pull001.png", 200, 200, TRUE ), 1, 200, 200, 200, 200 )
      }

{
}

答案 1 :(得分:0)

How would I declare the array elements like this:

actions = {
   new Action( "push" ),
   new Action( "pull" ),       
   new Action( "bla" ),
   new Action( "ble" ),       
   new Action( "blo" )
}

让这个工作的最简单方法是为Action定义一个构造函数,该构造函数接受char const*char const* const*std::string const&中的一个,然后转发此参数(可能会从你显示的示例中进行某种转换)到Image构造函数(因为图像是成员,你需要在初始化程序列表中做一些事情,比如_image(new Image(translate(arg))) translate是一个您定义的函数将push转换为Images/ActionBar/Push001.png)。