Скомпилируйте и запустите тестовую программу. Запустите его в отладчике и проверьте расположение памяти в GasStation. вычислите точное расстояние в байтах, каково расстояние от начала GasStation до int, которое вам нужно установить (обратите внимание, что если это первое, а виртуальных функций нет, то это расстояние гарантированно будет равно 0, поэтому вы можете пропустить первые несколько шаги).
Используйте это значение для увеличения указателя на позицию в пределах объекта, где вам нужно установить данные, как показывает Кирилл. Однако, просто чтобы быть задницей - ваш учитель этого заслуживает - не используйте здесь какой-либо символический язык ... используйте значение расстояния напрямую, например:
*reinterpret_cast<int*>(reinterpret_cast<char*>(gs)+42);
или 42, чтобы добраться до нужного места.
Если вы действительно хотите быть ослом, поместите в свою функцию фальшивую переменную. Скомпилируйте и запустите программу, а затем найдите расстояние в стеке между этой фиктивной переменной и расположением данных указателя GasStation. Затем сделайте это:
*reinterpret_cast<int*>(reinterpret_cast<char*>(*reinterpret_cast<char**>(reinterpret_cast<char*>(&my_var)-666)) + 42) = new_value;