Мне кажется, проблема в том, что эта строка:
f [i][j] = fib [ p [i][j] ];
Пытается вызвать функцию fib
неправильно. Здесь у вас есть правильная идея, но для вызова функции в C ++ вам нужно использовать обычные скобки, а не квадратные скобки. Я думаю, что эта строка должна выглядеть как
f [i][j] = fib ( p [i][j] );
В качестве продолжения, ваша реализация fib
кажется неправильной. В частности, вы берете два параметра, соответствующих матрицам, но вы никогда не используете эти значения напрямую. Вместо этого вы создаете новый локальный массив всех чисел Фибоначчи. Возможно, вы захотите, чтобы эта функция возвращала соответствующее число Фибоначчи, которое она генерирует.
Надеюсь, что это поможет, и удачи в вашем путешествии в C ++!