Местоположение
Россия, Томская обл., Томск

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

Все теги (7)

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

Все ответы (17)
  • Почему компилятор ругается?

    xorknown
    @xorknown
    Будут проблемы - решайте
    По стандарту Си он вычисляется как logical-OR-expression ? expression : conditional-expression - это означает, что второй операнд может быть любым выражением(даже применять оператор ,), а третий операнд подчиняется логике приоритета и должен быть выше или равен по сравнению с тернарным оператором. В данном случае это вычисляется как ((ch == 'h') ? (high = guess) : low) = guess. Оператор ?: возвращает временное значение, и компилятор говорит об этом.
    Ответ написан
  • Из-за чего может отличаться вывод на с++ и python?

    xorknown
    @xorknown
    Будут проблемы - решайте
    Как минимум функции f у вас разные. В c++ вы берете корень из всего выражения, а в питоне только от этой части (1 + x**2)
    Ответ написан
  • Как работает данный кусок кода на Си?

    xorknown
    @xorknown
    Будут проблемы - решайте
    Вам бы всё-таки к книге обратиться, а не к данному ресурсу.
    Очищать память, если имеется ввиду освобождать, надо только после выделения памяти. Если ваша программа где-либо вызывает malloc и т.п., то нужно вызывать free, не иначе.
    Динамические массивы и массивы большого размера лучше не выделять на стеке. Можно во время выполнения поймать переполнение стека. И при выделении массива помните, что память не бесконеча, и вам может ее не хватить. Опять же, если прочитать документацию, то realloc можете вызывать только после обязательного вызова malloc. Это все работа с аллокаторами, которые работают с динамической памятью.

    Максимальный размер name. Name - это указатель, в котором хранится адрес, адрес на память. В нем не хранится ни размер, ни данные о том на что он указывает, ему без разницы, он всегда будет одного размера. В вашем случае, при компиляции в программе заранее выделяется память под все текстовые данные которые указаны у вас в коде, на них и указывает указатель. Если вы захотите сохранять введённые данные, то вам придется воспользоваться выделением памяти.
    Ответ написан
  • Member with constructor not allowed in anonymous aggregate?

    xorknown
    @xorknown
    Будут проблемы - решайте
    1)
    #define GLFW
    #ifdef GLFW
    
    class GLFW : public IWindowSystem 
    -> class : public IWindowSystem {}


    Вы определяете пустой макрос с именем GLFW, потом создаете класс с таким же названием. Чего вы этим добиваетесь?

    2) Сигнатуры методов IWindowSystem и GLFW отлючаются
    virtual IWindow *createFullScreenWindow(char **title) = 0;
    -> virtual IWindow *createFullScreenWindow(const char *title) {}
    Ответ написан
  • Как получить доступ к наследованной переменной из функции базового класса?

    xorknown
    @xorknown
    Будут проблемы - решайте
    Не уверен, что вы код написали верно. Но чтобы просто получить доступ к переменной имя которой вы скрыли,
    достаточно просто написать имя базового класса::переменная(Base::myvar).
    Вопрос в другом, нужна ли вам переменная myvar в Another?
    UPD: неправильно прочитал.
    Инициализируйте переменную myvar в наследуемом классе. В Another у вас совсем другая переменная которая никак не относится к myvar base, просто уберите ее.
    Если вы хотите инициализировать myvar в конструкторе то вам надо завести конструктор base принимающий аргумент
    class Base {
    protected:
       int myvar;
       void useBaseVar(){
         cout << myvar << endl; // вывод 42
       }
    public:
       Base() : myvar(10) {}
       Base(int  val) : myvar(val) {}
       ~Base() {}
    };
    
    
    class Another : public Base {
    public:
       Another() : Base(42) {}
       void useMyVar() {
         useBaseVar();
       }
    };
    Ответ написан