>백엔드 개발 >C++ >C++ 컴파일 오류 해결 방법: ''함수' 호출에 일치하는 함수가 없습니까?

C++ 컴파일 오류 해결 방법: ''함수' 호출에 일치하는 함수가 없습니까?

WBOY
WBOY원래의
2023-08-25 16:31:588953검색

解决C++编译错误:'no matching function for call to 'function'',如何解决?

C++ 컴파일 오류에 대한 해결 방법: ''함수' 호출에 일치하는 함수가 없습니다. 어떻게 해결합니까?

C++로 프로그램을 작성할 때 다양한 컴파일 오류가 자주 발생합니다. 일반적인 오류 중 하나는 "'함수' 호출에 일치하는 함수가 없습니다"입니다. 이 오류는 일반적으로 함수가 호출되고 컴파일러가 일치하는 함수 선언 또는 정의를 찾을 수 없을 때 발생합니다. 이 문서에서는 이 컴파일 오류를 해결하는 방법을 자세히 설명하고 몇 가지 샘플 코드를 제공합니다.

먼저 간단한 예를 살펴보겠습니다.

#include <iostream>

void add(int a, int b) {
    std::cout << "Sum: " << a + b << std::endl;
}

int main() {
    add(1, 2, 3);  // 调用了错误的函数
    return 0;
}

위 코드에서는 두 정수의 합을 계산하는 add 함수를 정의합니다. 메인 함수에서 우리는 실수로 add 함수를 호출하고 세 개의 매개변수를 전달했습니다. 세 개의 매개변수를 허용하는 add 함수의 오버로드된 버전을 제공하지 않았기 때문에 컴파일러는 일치하는 함수 선언이나 정의를 찾을 수 없어 컴파일 오류가 발생합니다.

이 문제를 해결하려면 오류 메시지를 보고 잘못된 코드 줄을 찾아야 합니다. 컴파일러는 일반적으로 일치하는 함수 선언이나 정의가 없음 등과 같은 오류 메시지에 오류에 대한 몇 가지 힌트를 제공합니다. 이러한 팁을 바탕으로 오류가 발생한 이유를 파악하고 그에 따라 코드를 수정할 수 있습니다.

이 예에서 컴파일러는 "'add' 호출에 일치하는 함수가 없습니다"라는 오류를 보고합니다. 이 오류 메시지는 우리가 호출한 add 함수가 일치하는 함수 선언이나 정의를 찾지 못했음을 알려줍니다. 이 오류를 수정하려면 함수 호출의 매개변수가 함수에서 정의한 매개변수와 일치하도록 수정해야 합니다.

위 오류를 수정하는 방법은 아래와 같이 함수 호출이 함수 정의와 일치하도록 추가 매개변수를 제거하는 것입니다.

#include <iostream>

void add(int a, int b) {
    std::cout << "Sum: " << a + b << std::endl;
}

int main() {
    add(1, 2);
    return 0;
}

수정된 코드에서는 함수 호출이 일치하도록 추가 매개변수 "3"을 제거했습니다. 함수 정의 일치. 이런 식으로 컴파일러는 add라는 함수의 정의를 찾고 프로그램을 성공적으로 컴파일할 수 있습니다.

함수 호출 매개변수 불일치 외에도 "'함수' 호출에 일치하는 함수가 없습니다." 오류가 발생할 수 있는 몇 가지 일반적인 이유가 있습니다. 아래에는 몇 가지 일반적인 상황과 해결 방법이 나와 있습니다.

  1. 함수 선언과 정의된 매개변수 유형이 일치하지 않습니다.
    예를 들어, 함수 선언이 int 유형의 매개변수를 사용하고 함수 정의가 float 유형의 매개변수를 사용하는 경우 컴파일러는 일치하는 함수 선언 또는 정의를 찾을 수 없습니다. 해결책은 함수 선언과 정의 간에 매개변수의 유형과 개수가 일관되도록 하는 것입니다.
  2. 함수 오버로드 충돌.
    동일한 매개변수 유형과 번호를 가진 여러 함수 오버로드가 있는 경우 컴파일러는 어떤 오버로드된 함수를 호출할지 결정할 수 없습니다. 해결책은 보다 구체적인 매개변수 유형으로 함수 오버로드를 제공하거나 매개변수를 필요한 유형으로 명시적으로 캐스팅하는 것입니다.
  3. 함수가 선언되거나 정의되지 않았습니다.
    함수를 호출하기 전에 일반적으로 컴파일러가 함수를 찾아 연결할 수 있도록 함수의 선언이나 정의를 제공해야 합니다. 함수가 선언되거나 정의되지 않은 경우 컴파일러는 "'함수' 호출에 일치하는 함수가 없습니다"라는 오류를 보고합니다. 해결책은 함수의 선언이나 정의를 제공하는 것입니다.

요약하자면, C++ 컴파일 오류 "'함수' 호출에 일치하는 함수가 없습니다"를 해결하려면 먼저 오류 메시지를 확인하고 오류의 원인을 파악해야 합니다. 그런 다음 오류 메시지에서 제공하는 힌트를 사용하여 함수 호출이 함수 선언 또는 정의와 일치하도록 코드를 수정할 수 있습니다. 호출 함수의 매개변수를 올바르게 수정하면 이 컴파일 오류를 성공적으로 해결할 수 있으므로 프로그램이 성공적으로 컴파일되고 실행될 수 있습니다.

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

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