Я получаю сообщение об ошибке при попытке запустить этот код
In function 'int main()':
error: 'area' was not declared in this scope
Я не могу найти четкого решения проблемы.
#include <iostream>
using namespace std;
int main() {
area(13.3, 67.4);
return 0;
}
void area(int a, int b){
cout << "The area is " << a * b << endl;
}
void area(float a, float b){
cout << "The area is " << a * b << endl;
}
void area(double a, double b){
cout << "The area is " << a * b << endl;
}
@rial В следующий раз скопируйте сообщения об ошибках и разместите их в виде текста, а не изображения.
Поместите прототипы функций над основной функцией, и все будет в порядке.
Вам необходимо объявить функции, прежде чем вы сможете их использовать.
Либо вперед объявить их:
#include <iostream>
using namespace std;
// forward declarations
void area(int a, int b);
void area(float a, float b);
void area(double a, double b);
int main() {
area(13.3, 67.4);
return 0;
}
void area(int a, int b){
cout << "The area is " << a * b << endl;
}
void area(float a, float b){
cout << "The area is " << a * b << endl;
}
void area(double a, double b){
cout << "The area is " << a * b << endl;
}
В противном случае переместите реализации выше main()
:
#include <iostream>
using namespace std;
void area(int a, int b){
cout << "The area is " << a * b << endl;
}
void area(float a, float b){
cout << "The area is " << a * b << endl;
}
void area(double a, double b){
cout << "The area is " << a * b << endl;
}
int main() {
area(13.3, 67.4);
return 0;
}
При этом, поскольку реализации абсолютно одинаковы, только с разными типами данных, рассмотрите возможность использования вместо этого одной шаблонной функции:
#include <iostream>
using namespace std;
template<typename T>
void area(T a, T b){
cout << "The area is " << a * b << endl;
}
int main() {
area<double>(13.3, 67.4);
return 0;
}
вам нужно иметь объявления функции, по крайней мере, до того, как вы ее вызовете