не объявляется в области действия ошибки в C ++ при перегрузке - PullRequest
0 голосов
/ 27 сентября 2018

Я получаю сообщение об ошибке при попытке запустить этот код

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;
}

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вам нужно объявить функции, прежде чем вы сможете их использовать.

Либо объявите их вперед:

#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;
}
0 голосов
/ 27 сентября 2018

Поместите прототипы функций над вашей основной функцией, и все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...