Задать вопрос
Контакты

Достижения

Все достижения (9)

Наибольший вклад в теги

Все теги (36)

Лучшие ответы пользователя

Все ответы (8)
  • Магия конструкторов?

    Компилятор не делаем больше одного преобразования
    Если заменить на Example two=std::string("line");, то все заработает
    Example two=std::string("line");  ->  Example two(std::string("line")); //подходит конструктор Example ( const std::string &line )

    Example two="line";  ->  Example two("line"); //Нет конструктора, который принимает const char*
    Ответ написан
    Комментировать
  • Умные указатели?

    Есть задачи, которые не имеют решения на ссылках (либо это решение в разы хуже, чем если бы мы использовали указатели).
    Пример: паттерн стратегия
    #include <iostream>
    #include <memory>
    
    class Strategy {
    public:
        virtual void doAction() = 0;
    };
    
    class FirstStrategy : public Strategy{
    public:
        void doAction() override {
            std::cout << "First" << std::endl;
        }
    };
    
    class SecondStrategy : public Strategy{
    public:
        void doAction() override {
            std::cout << "Second" << std::endl;
        }
    };
    
    class A {
        std::shared_ptr<Strategy> behavior;
    
    public:
        void setBehavior(std::shared_ptr<Strategy> b) {
            behavior = b;
        }
    
        void doBehavior() {
            behavior->doAction();
        }
    
    };
    
    int main() {
        A a;
        a.setBehavior(std::make_shared<FirstStrategy>());
        a.doBehavior();
    
        a.setBehavior(std::make_shared<SecondStrategy>());
        a.doBehavior();
        return 0;
    }


    Во время исполнения стратегия может меняться. Так как ссылку изменить нельзя, придется создавать какие-то костыли. С указателями все проще: просто обновляем значение переменной
    Ответ написан
    Комментировать
  • Как настроить парсер для выгрузки со страницы нескольких чисел?

    $data = file_get_contents('http://95.31.11.93:82/');
    preg_match('#Давление\s+([\d\.]+)mm#Uis', $data, $out);
    echo $out[1];
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (29)