• Построковое чтение из файла и обработка строк на C

    retran
    @retran
    А вы уверены что strtok всегда создает новую строку не затирая старую, когда сохраняете указатель на токен в свой список?

    Замените
    list->item = ptr;

    на
    list->item = (char *)malloc(strlen(ptr) + 1);
    strcpy(ptr, list->item);
    Ответ написан
    1 комментарий
  • Паттерн Стратегия

    @rtorsten
    Как реализовать метод void changeValueTo1::Change() так, чтобы он имел доступ к параметрам класса MyClass?

    Наиболее простой способ, как уже и сказали сделать перекрестную ссылку/указатель.
    class changeValueTo1 : public changeValue
    {
    public:
        changeValueTo1(General * p) : _parent(p) {}
        ~changeValueTo1() {}
        void Change();
    
    private:
        General * _parent;
    };
    
    void changeValueTo1::Change()
    {
        //должен изменить значение параметра a объекта класса MyClass на 1
        _parent->a = 5;
    }
    
    MyClass::MyClass() {
       object = new changeValueTo1(this);
    }
    


    В данном случае это параметр класса General, а не MyClass как ты указал в комментарии. Если нужно именно MyClass то необходимо в changeValueTo1 изменить тип указателя.
    Ответ написан
    1 комментарий
  • Паттерн Стратегия

    taliban
    @taliban
    php программист
    Перекрестная ссылка Вам нужна, хотя это не лучший вариант, часто причина утечек, а обязательна ли стратегия? Вообще лично я стараюсь придерживаться правила: «проще писать проще, потом и поддерживать будет проще и дописывать будет проще».
    Ответ написан
    5 комментариев