C++ Переменная-член инициализирована ненулевым значением, но равна нулю в функции-члене

Новичок в С++, я пытаюсь сделать простой стартовый экран для видеоигры. Я хочу, чтобы начальный экран прокручивался снизу экрана. Для этого у меня есть несколько переменных-членов, доступ к которым осуществляется в функции Update. У меня проблема в том, что я инициализирую scrollStart в конструкторе с ненулевыми значениями. Однако, когда вызывается Update, я распечатываю значение y scrollStart, и оно равно 0. В этом классе есть только одна другая функция-член, которая не касается scrollStart, поэтому я понятия не имею, почему она сбрасывается до нуля. Кто-нибудь, более знакомый с С++, знает, почему это происходит?

Мой заголовочный файл выглядит примерно так (удалены ненужные вещи):

class StartScreen : public GameEntity 
{
private:
    Vector2 scrollStart;

public:
    void Update();

}; 

Мой файл cpp выглядит примерно так:

StartScreen::StartScreen()
{
    ...

    Vector2 scrollStart = Vector2(SCREEN_WIDTH*0.5f, SCREEN_HEIGHT);
    printf("scrollStart Y: %f\n", scrollStart.y);   // prints 868 as it should
}

StartScreen::Update()
{
    printf("scrollStart Y: %f\n", scrollStart.y);  // prints 0
}

person bitwitch    schedule 01.07.2018    source источник
comment
разве это не потому, что вы используете локальную копию в своем конструкторе, а не переменную-член...? думаю, если вы просто удалите Vector2 из конструктора, он должен работать   -  person Omid CompSCI    schedule 02.07.2018
comment
о, я этого не понял, но теперь, когда вы говорите, это и так ясно. Я должен удалить Vector2 перед именем переменной в конструкторе, верно?   -  person bitwitch    schedule 02.07.2018
comment
Да, потому что это создает локальную переменную, которая будет иметь это значение только в пределах области действия конструктора. Вы не касаетесь фактической переменной-члена.   -  person Omid CompSCI    schedule 02.07.2018
comment
Спасибо, давно смотрю на это. Другая пара глаз может уловить это так быстро.   -  person bitwitch    schedule 02.07.2018
comment
Вы также можете иметь собственную привычку использовать ключевое слово this и использовать его в любой функции внутри класса, чтобы вы точно знали, что ссылаетесь на член. переменные. Например в вашем конструкторе можно было бы сделать так-›scrollStart = ...   -  person Omid CompSCI    schedule 02.07.2018
comment
@bitwitch Я давно на это смотрю. Совет для профессионалов: проверка кода с помощью отладчика работает намного лучше, чем просто смотрение на него.   -  person πάντα ῥεῖ    schedule 02.07.2018
comment
или просто используйте m_scrollStart, чтобы вы могли сразу сказать, что это переменная-член (поле), без необходимости использовать this-> сумасшествие повсюду.   -  person 3Dave    schedule 02.07.2018
comment
Закрыт как дубликат, но, честно говоря, проблема с отладочными вопросами обычно заключается в том, что те же ошибочные предположения, которые вызывают путаницу, также затрудняют поиск существующего вопроса SO.   -  person MSalters    schedule 02.07.2018