ClickHouse C++ 如何隐藏/包装一个类

2021-10-29 16:55:19 浏览数 (2)

我有一个类A

代码语言:javascript复制
class A
{
public:
    A(){}
    
    method(){};
}

A类的变种Entry,它其实和A是一毛一样的

代码语言:javascript复制
  
    class EntryA {
    
    public:
        friend class A;

        Entry() = default;

        A *operator->() && = delete;

        const A *operator->() const && = delete;

        A &operator*() && = delete;

        const A &operator*() const && = delete;

        A *operator->() &{ return &*a; }

        const A *operator->() const &{ return &*a; }

        A &operator*() &{ return *a; }

        const A &operator*() const &{ return *a; }

    private:
        A a;

        explicit EntryA(A &a_) : a(a_) {}
   
     };

如何使用

代码语言:javascript复制
auto entry_a = Entry(A());

// EntryA 调用 A的方法
entry_a.method();

那它能干啥呢?

- 当A为一个类的一个成员的时候,可以利用EntryA对A进行封装,进一步进行其他的操作

- xxx

0 人点赞