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)
};
};
我想直接在類聲明中初始化靜態常量BDTNode fv_nodes數組,因爲C++ 11允許這樣做。但是我得到了「C2864:'MyClass :: fv_nodes':一個帶有類內初始值設定項的靜態數據成員必須具有非易失性const積分」。而且我不能在課堂外初始化它,因爲在這種情況下,「BDTNode」類將無法訪問。那麼我應該怎麼做?初始化私有成員靜態常量數組