小编nya*_*god的帖子

返回"大型"私人会员的良好做法是什么?

typedef std::vector <std::vector <int>> DataType;

class MyClass
{
public:
    const DataType &getData() const;
    DataType getData2() const;

private:
    DataType data;
};

const DataType &MyClass::getData1() const
{
    return data;
}

DataType MyClass::getData2() const
{
    return data;
}
Run Code Online (Sandbox Code Playgroud)

我应该避免使用getData1()来复制它吗?更喜欢const引用而不是getData2()是否有任何性能优势?我应该如何从课堂上归还这样的"大"私人会员?

c++ return private

3
推荐指数
1
解决办法
397
查看次数

初始化私有成员静态const数组

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)
    };
};
Run Code Online (Sandbox Code Playgroud)

我想直接在类声明中初始化静态const BDTNode fv_nodes数组,因为C++ 11允许这样做.但我得到"C2864:'MyClass :: fv_nodes':具有类内初始值设定项的静态数据成员必须具有非易失性const积分".我不能在课外初始化它,因为在那种情况下"BDTNode"类将无法访问.那我该怎么做呢?

c++ arrays initialization static-members c++11

0
推荐指数
1
解决办法
941
查看次数

标签 统计

c++ ×2

arrays ×1

c++11 ×1

initialization ×1

private ×1

return ×1

static-members ×1