ホームページ >バックエンド開発 >C++ >C++ コンパイル エラーを解決する方法: 「'関数' の呼び出しに一致する関数がありません」

C++ コンパイル エラーを解決する方法: 「'関数' の呼び出しに一致する関数がありません」

WBOY
WBOYオリジナル
2023-08-25 16:31:588940ブラウズ

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

C コンパイル エラーの解決策: 「'関数' の呼び出しに一致する関数がありません。どうすれば解決できますか?」

C でプログラムを作成する場合、さまざまなコンパイル エラーが発生することがよくあります。よくあるエラーの 1 つは、「'関数' の呼び出しに一致する関数がありません」です。このエラーは通常、関数が呼び出され、コンパイラが一致する関数宣言または定義を見つけられなかった場合に発生します。この記事では、このコンパイル エラーを解決する方法を詳しく説明し、サンプル コードをいくつか紹介します。

まず、簡単な例を見てみましょう:

#include <iostream>

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

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

上記のコードでは、2 つの整数の合計を計算する加算関数を定義します。 main 関数で、誤って add 関数を呼び出し、3 つのパラメータを渡してしまいました。 3 つのパラメーターを受け入れる 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;
}

修正されたコードでは、冗長なパラメーターを削除しました。関数呼び出しを関数定義に一致させるには、parameters" 3" を使用します。こうすることで、コンパイラは add という名前の関数の定義を見つけて、プログラムを正常にコンパイルできるようになります。

関数呼び出しパラメーターの不一致に加えて、「'関数' の呼び出しに一致する関数がありません」エラーの原因となる一般的な理由が他にもあります。以下に、一般的な状況と解決策をいくつか示します。

  1. 関数宣言と定義されたパラメータの型が一致しません。
    たとえば、関数宣言で int 型のパラメーターが使用され、関数定義で float 型のパラメーターが使用される場合、コンパイラーは一致する関数宣言または定義を見つけることができません。解決策は、関数の宣言と定義の間でパラメーターの型と数が一貫していることを確認することです。
  2. 関数のオーバーロードの競合。
    同じパラメーターの型と番号を持つ複数の関数オーバーロードがある場合、コンパイラーはどのオーバーロードされた関数を呼び出すかを判断できません。解決策は、関数のオーバーロードにより具体的なパラメーターの型を指定するか、パラメーターを必要な型に明示的にキャストすることです。
  3. 関数は宣言または定義されていません。
    関数を呼び出す前に、コンパイラが関数を見つけてリンクできるように、通常は関数の宣言または定義を提供する必要があります。関数が宣言または定義されていない場合、コンパイラは「'function' の呼び出しに一致する関数がありません」というエラーを報告します。解決策は、関数の宣言または定義を提供することです。

要約すると、C コンパイル エラー「'関数' の呼び出しに一致する関数がありません」を解決するには、まずエラー メッセージを確認してエラーの原因を特定する必要があります。次に、エラー メッセージによって提供されるヒントを使用してコードを変更し、関数呼び出しが関数の宣言または定義と一致することを確認します。呼び出し関数のパラメーターを正しく変更することで、このコンパイル エラーを解決し、プログラムを正常にコンパイルして実行できるようになります。

以上がC++ コンパイル エラーを解決する方法: 「'関数' の呼び出しに一致する関数がありません」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。