Как добиться инкапсуляции в C ++ с помощью метода getter - PullRequest
0 голосов
/ 05 сентября 2018

В приведенном ниже коде я присваиваю значение URL из другой функции класса. Я получил комментарий к коду: «Сделать URL-адрес приватным и реализовать функцию получения, которая должна возвращать std::string значение через выходной параметр, переданный по ссылке '

class http_client
{
    public:
        std::string url;
};

Меня смущает приведенный выше комментарий, потому что я использую URL только для установки значения вне класса http_client. Изначально я думал, что должен сделать один метод открытого сеттера, который устанавливает значение url, как показано ниже.

class http_client
{
    private:
        std::string url;
    public:
        void set_url(const std::string& url)
        {
            this->url = url;
        }
};

Кто-нибудь может подсказать, что мне не хватает в приведенном выше комментарии к коду?

1 Ответ

0 голосов
/ 05 сентября 2018

Функция получения является аналогом установки. С помощью установщика клиентский код может установить значение. С помощью getter клиентский код должен иметь возможность получить значение.

Я могу придумать пару способов сделать это.

std::string const& get_url() const
{
   return this->url;
}

void get_url(std::string& url) const
{
    url = this->url;
}

Вас просят осуществить это, используя второй подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...