C ++-包装类而不是实现类

时间:2018-11-09 00:03:42

标签: c++ struct wrapper

我正在尝试通过一些完整的Implementation.h文件实现2个包装器类(1个用户,1个程序员)。我的目标是使用户无法访问该结构或有关该结构的实现详细信息。这个想法还只是将必要的方法从Implementation.h扩展到任何一个用户/程序员。有什么想法吗?

implementation.h

class implementation{
    public:
        /*....methods.....*/
    private:
        struct MyStruct;
}

user.h

class user{
    public:
        /*....methods.....*/
}

programmer.h

class programmer{
    public:
        /*....methods.....*/
}

1 个答案:

答案 0 :(得分:1)

implementation.h

#include <memory>
class implementation{
  public:
    /*....methods.....*/
  private:
    struct MyStruct;
    std::unique_ptr<MyStruct> my_data;
}

implementation.cc

implementation::MyStruct {
  public:
    /*....methods.....*/
  private:
    ...
};
implementation::implementation() {
  my_data = std::make_unique<MyStruct>();
}