1

我有以下内容:

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" )
}

之类的事情

4

2 回答 2

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 )
      }

{
}
于 2013-04-11T01:00:23.250 回答
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 是成员,你需要在初始化列表中做一些事情,比如你定义的函数_image(new Image(translate(arg)))在哪里变成)。translatepushImages/ActionBar/Push001.png

于 2013-04-11T01:15:39.133 回答