Вы должны объявить функцию, прежде чем использовать/вызывать ее. Вы действительно объявили версию с 2 аргументами rectangle
функция, но вы, кажется, забыли объявить версию с 1 аргументом, принимающую версию.
Как показано ниже, если вы добавляете объявление для версии с 1 аргументом, то ваша программа работает(компилируется).
#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;
}
Результаты работы программы можно посмотреть здесь.
Альтернативное решение:
Если вы не хотите объявлять каждую функцию отдельно, вам следует просто определить их перед main, а не объявлять их, как показано ниже.
#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;
}