class MyClass
{
public:
...
private:
enum class BDTNodeType : unsigned char
{
NT_TERMINAL_ZERO,
NT_TERMINAL_ONE,
NT_TERMINAL_X,
NT_NOT_TERMINAL
};
class BDTNode
{
public:
explicit BDTNode(BDTNodeType node_type = BDTNodeType::NT_NOT_TERMINAL);
BDTNode(const BDTNode &node);
~BDTNode();
BDTNodeType type;
BDTNode *thenPtr; //1
BDTNode *elsePtr; //0
};
BDTNode *root_node;
//Constant nodes
static const BDTNode fv_nodes[3] = {
BDTNode(BDTNodeType::NT_TERMINAL_ZERO),
BDTNode(BDTNodeType::NT_TERMINAL_ONE),
BDTNode(BDTNodeType::NT_TERMINAL_X)
};
};
Я хочу инициализировать массив static const BDTNode fv_nodes непосредственно внутри объявления класса, поскольку C++ 11 позволяет это сделать. Но я получаю «C2864:« MyClass :: fv_nodes »: статический член данных с инициализатором в классе должен иметь нестабильный const-интеграл». И я не могу инициализировать его вне класса, потому что в этом случае класс «BDTNode» был бы недоступен. Итак, как мне это сделать?Инициализация частного элемента static const array