C ++ - классы обертки над классом реализации - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь реализовать 2 класса-обертки (1 пользователь, 1 программист) поверх файла полной реализации .h. Моя цель - чтобы пользователь НЕ мог получить доступ к структуре или деталям реализации структуры. Идея также состоит в том, чтобы распространить необходимые методы только из реализационного файла либо на пользователя, либо на программиста. Есть идеи?

implementation.h

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

user.h

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

programmer.h

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

1 Ответ

0 голосов
/ 09 ноября 2018
*

implementation.h 1001 *

#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>();
}
...