我有以下内容:
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" )
}
有点事
答案 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
)。