Você tem que declarar a função antes de usar/chamada-lo. Você fez declarar a 2 versão do argumento rectangle
função, mas você parece não se esqueça de declarar a 1 argumento tomar versão.
Como mostrado abaixo, se você adicionar a declaração para o 1 argumento versão em seguida, o programa funciona(compila).
#include <iostream>
using namespace std;
//declare the function before main
int rectangle(int p, int l);
int rectangle(int p);//ADDED THIS DECLARATION
int main() {
cout << rectangle(3);
return 0;
}
//define the functions after main
int rectangle(int p) {
return p*p;
}
int rectangle(int p, int l) {
return p*l;
}
A saída do programa pode ser visto aqui.
Solução alternativa:
Se você não quiser declarar cada função separadamente, em seguida, você deve apenas defini-los antes de principal, em vez de declará-los como mostrado abaixo.
#include <iostream>
using namespace std;
//define the functions before main. This way there is no need to write a separate function declaration because all definition are declarations
int rectangle(int p) {
return p*p;
}
int rectangle(int p, int l) {
return p*l;
}
int main() {
cout << rectangle(3);
return 0;
}