Похоже, что я неправильно понял, что именно происходило в javascript, что позволяло этому поведению происходить. После более глубокого изучения я вижу, что единственные переменные времени доступны в замыканиях, когда определение переменной находится в пределах родительской области определения замыкания как таковое:
var funcB = function(funcA){
funcA();
};
(function(){
var firstVar = 1;
var secondVar = 2;
funcB(function(){
alert(firstVar + secondVar);
});
})();
Такое же поведение может быть достигнуто с помощью лямбда-захват (как предложено пользователем @Marek R в комментариях к вопросу) в C ++ следующим образом:
void funcB(std::function<void()> funcA) {
funcA();
}
int main() {
int firstVar = 1;
int secondVar = 2;
funcB([&]() {
std::cout << firstVar + secondVar;
});
std::cin.get();
return 0;
}
Поэтому мой первоначальный вопрос возник из-за незнания того, чего я не знал. Чтобы достичь того, чего я на самом деле хочу, мне нужно будет передать параметры моей лямбде или реализовать другой шаблон проектирования.