在Java中,您可以例如编写:
public static final Material WOOD = (new Material(MapColor.WOOD)).setBurning();
如何用C ++编写?
static Material * WOOD = new Material(MapColor::WOOD)....
我想避免任何Init调用或某种形式的调用。 最好是像在Java中那样做。
答案 0 :(得分:1)
首先,在C ++中,您不必使用new
创建对象。而且您应该避免使用指针。
确切地在这种情况下该做什么很大程度上取决于setBurning
返回的内容,但是如果它按值返回一个Material
对象(我建议),那么您可以执行类似的操作:
static Material WOOD = Material(MapColor::WOOD).setBurning();
表达式Material(MapColor::WOOD)
创建一个临时Material
对象,然后使用该对象调用其setBurning
函数,该函数返回一个新的Material
对象,您将其保存在其中变量WOOD
。
答案 1 :(得分:0)
所以看来您正在寻找这样的代码
// header file
class Something
{
static Material* WOOD;
};
// source file
Material* Something::WOOD = new Material(MapColor::WOOD);
这是完全正常的C ++代码,但您在Java中找不到。