仅从另一个类创建类/句柄

时间:2015-07-15 12:00:53

标签: c++ c++11 friend

我只需要我的网格类就可以创建这些类,并且我不希望嵌套这些类,因为如果有这么长的限定名。我怎么能做到最好?

struct Handle
{
    explicit Handle(int i) : _index(i) {}
    bool IsValid() { return _index != NO_HANDLE; }

protected:
    enum { NO_HANDLE = -1 };
    int _index;
};

// **************************************************************************************
struct HalfEdgeHandle : Handle
{
    HalfEdgeHandle(int i) : Handle(i) {}
    static HalfEdgeHandle GetInvalid() { return HalfEdgeHandle(NO_HANDLE); }
};

// **************************************************************************************
struct FaceHandle : Handle
{
    FaceHandle(int i) : Handle(i) {}
    static FaceHandle GetInvalid() { return FaceHandle(NO_HANDLE); }
};

// **************************************************************************************
struct VertexHandle : Handle
{
    VertexHandle(int i) : Handle(i) {}
    static VertexHandle GetInvalid() { return VertexHandle(NO_HANDLE); }
};

只有无效的句柄才能在外面访问,现在我认为可以通过使用静态变量来完成。

0 个答案:

没有答案