Почему C++ не видит функцию, находящуюся под другой?
Просто добавьте int foo(); выше bar, а реализацию оставьте как есть.
Слово static тут не нужно, можете удалить.
Вынести определение функций в заголовочный файл (*.h)