>  기사  >  백엔드 개발  >  C++ 코드에 나타나는 "오류: '함수' 호출에 일치하는 함수가 없습니다." 문제 해결

C++ 코드에 나타나는 "오류: '함수' 호출에 일치하는 함수가 없습니다." 문제 해결

PHPz
PHPz원래의
2023-08-26 17:37:065812검색

解决C++代码中出现的“error: no matching function for call to 'function'”问题

C++ 코드에서 "오류: '함수' 호출에 대해 일치하는 함수가 없습니다" 문제 해결

C++로 프로그래밍하는 과정에서 "오류: '함수' 호출에 대해 일치하는 함수가 없습니다"라는 문제가 자주 발생합니다. " 에러 메시지. 이 오류는 일반적으로 함수가 호출될 때 컴파일러가 함수 호출과 일치하는 함수 정의를 찾을 수 없음을 의미합니다. 이 상황에는 일반적으로 여러 가지 원인이 있을 수 있으며, 다음은 설명할 몇 가지 샘플 코드와 함께 이 문제를 해결하는 방법을 자세히 설명합니다.

  1. 함수 매개변수 유형 불일치

C++에서 함수 호출은 함수에서 정의한 매개변수 유형과 일치해야 합니다. 함수 호출 시 전달된 매개변수 유형이 함수에서 정의한 매개변수 유형과 일치하지 않으면 "'함수' 호출에 일치하는 함수가 없습니다" 오류가 발생합니다. 예:

// 定义一个函数,接受一个整数参数
void printNumber(int num) {
    cout << "Number: " << num << endl;
}

int main() {
    double num = 3.14;
    printNumber(num);  // 错误:找不到匹配的函数定义
    return 0;
}

위 코드에서는 정수 매개변수를 받아들이는 printNumber 함수가 정의된 후, 메인 함수에서 double 유형 매개변수를 전달하여 printNumber 함수를 호출해 봅니다. 매개변수 유형이 일치하지 않기 때문에 컴파일러는 일치하는 함수 정의를 찾을 수 없으므로 오류가 보고됩니다.

이 문제를 해결하는 방법은 함수의 호출 매개변수 유형이 함수에서 정의한 매개변수 유형과 일치하는지 확인하는 것입니다. 예를 들어 다음과 같이 캐스팅하면 됩니다.

int main() {
    double num = 3.14;
    printNumber((int)num);  // 强制将num转换为整数类型
    return 0;
}

이 예제 코드에서는 double 유형 num을 int 유형으로 캐스팅하면 printNumber 함수의 매개변수 유형과 일치하여 컴파일 오류를 해결할 수 있습니다.

  1. 함수 매개변수 개수가 일치하지 않습니다

매개변수 유형 불일치 외에도 함수 매개변수 개수로 인해 "'함수' 호출에 일치하는 함수가 없습니다." 오류가 발생할 수 있습니다. 함수를 호출할 때 제공된 매개변수 수가 함수에서 정의한 매개변수 수와 일치하지 않으면 컴파일러는 일치하는 함수 정의를 찾을 수 없으며 오류를 보고합니다. 예:

// 定义一个接受两个整数参数的函数
void addNumbers(int num1, int num2) {
    int sum = num1 + num2;
    cout << "Sum: " << sum << endl;
}

int main() {
    int num = 10;
    addNumbers(num);  // 错误:找不到匹配的函数定义
    return 0;
}

위 코드에서 두 개의 정수 매개변수를 허용하는 addNumbers 함수가 정의된 다음 하나의 정수 매개변수만 주 함수에 전달되어 addNumbers 함수를 호출합니다. 매개변수 수가 일치하지 않기 때문에 컴파일러는 일치하는 함수 정의를 찾을 수 없으므로 오류가 보고됩니다.

이 문제를 해결하는 방법은 함수가 호출하는 매개변수 개수가 함수에서 정의한 매개변수 개수와 일치하는지 확인하는 것입니다. 이는 누락된 매개변수를 제공하거나 중복 매개변수를 삭제하여 달성할 수 있습니다. 예:

int main() {
    int num1 = 10;
    int num2 = 20;
    addNumbers(num1, num2);  // 提供两个参数
    return 0;
}

이 예제 코드에서 두 개의 정수 매개변수를 제공하여 addNumbers 함수를 호출하면 매개변수 수가 일치하는지 확인하여 컴파일 오류가 해결됩니다.

  1. 함수가 정의되지 않았거나 오버로드되었습니다

또 다른 가능한 이유는 함수가 정의되지 않았거나 오버로드되었기 때문입니다. 호출된 함수가 코드에 정의되어 있지 않거나 여러 함수가 오버로드된 경우 컴파일러는 함수가 호출될 때 어떤 함수를 호출할지 결정할 수 없으며 "'함수' 호출에 일치하는 함수가 없습니다." 오류를 보고합니다. 예:

// 定义两个函数,一个接受整数参数,一个接受字符参数
void printValue(int num) {
    cout << "Value: " << num << endl;
}

void printValue(char ch) {
    cout << "Character: " << ch << endl;
}

int main() {
    double num = 3.14;
    printValue(num);  // 错误:找不到匹配的函数定义
    return 0;
}

위의 예제 코드에서는 두 개의 오버로드된 함수 printValue가 정의되어 각각 정수 및 문자 매개변수를 허용합니다. 그런 다음 main 함수에 double 유형 매개변수를 전달하여 printValue 함수를 호출합니다. 오버로드된 함수 정의가 있기 때문에 컴파일러는 호출할 함수를 결정할 수 없으며 오류를 보고합니다.

이 문제를 해결하는 방법은 함수 호출이 고유한지, 즉 여러 개의 오버로드된 함수가 없는지 확인하는 것입니다. 오버로드된 함수가 여러 개 있는 경우 캐스팅을 통해 명시적으로 함수를 호출할 수 있습니다. 예:

int main() {
    double num = 3.14;
    printValue((int)num);  // 强制调用接受整数参数的函数
    return 0;
}

이 예제 코드에서는 double 유형 num을 int 유형으로 캐스팅하여 정수 매개변수를 허용하는 함수를 호출합니다. 컴파일 오류.

실제 프로그래밍에서는 "오류: '함수' 호출에 일치하는 함수가 없습니다." 오류를 피하기 위해 매개변수 유형과 숫자의 일치, 함수의 정의 및 오버로드에 주의하세요. 이런 종류의 오류가 발생하면 함수 호출과 함수 정의를 주의 깊게 확인하여 불일치의 원인을 찾은 다음 적절한 해결 방법을 취하여 문제를 성공적으로 해결할 수 있습니다.

위 내용은 C++ 코드에 나타나는 "오류: '함수' 호출에 일치하는 함수가 없습니다." 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.