C はオブジェクト指向プログラミング言語としては比較的使いやすいですが、必ずエラーが発生します。エラーの 1 つは、「戻り値の型と関数のシグネチャが矛盾しています」です。この記事では、このエラーの原因と解決策について説明します。
関数を定義するときは、関数名と関数シグネチャを定義する必要があります。関数シグネチャはパラメータの型と順序、戻り値の型によって決まります。したがって、関数を定義するときに、関数シグネチャの戻り値の型が実際の関数の戻り値の型と一致しない場合、「戻り値の型と関数のシグネチャが一致しません」というエラーが発生します。
たとえば、このエラーは次のコードで発生します:
int add(int a, int b) { return a + b; } float add(int a, int b) { return a + b; }
この例では、同じ名前 add
を持つ 2 つの関数を定義しますが、それらの戻り値の型は異なります。最初の add
は int
型変数を返し、2 番目の add
は float
型変数を返します。これが、「戻り値の型と関数のシグネチャが一致していません」エラーの原因です。
この状況に遭遇した場合、次の 2 つの方法で解決できます:
関数のシグネチャを変更します。パラメータの型と順序と戻り値の型で構成されます。したがって、同じ名前の 2 つの関数を定義する場合は、それらの戻り値の型が同じである必要があります。
たとえば、上の例の最初の add
関数の戻り値の型を float
に変更して、2 番目の 関数と一貫性を持たせることができます。 add
関数の戻り値の型は同じです。コードは次のとおりです。
float add(int a, int b) { return a + b; } float add(float a, float b) { return a + b; }
これにより、「戻り値の型が関数のシグネチャと一致しません」というエラーを回避できます。
関数のオーバーロードとは、同じスコープ内で同じ名前を持つ、ただしパラメーター リストが異なる 2 つ以上の関数を定義することを指します。関数のオーバーロードを通じて、同様の関数を含むがパラメーター リストが異なる複数の関数を定義できます。
たとえば、上記の例では関数 add
をオーバーロードできます。コードは次のとおりです。
int add(int a, int b) { return a + b; } float add(float a, float b) { return a + b; }
関数のオーバーロードを通じて、複数の名前を定義できます。同じ名前ですが、パラメータ リストは関数ごとに異なるため、「戻り値の型と関数のシグネチャが一致しない」エラーが回避されます。
C では、関数のシグネチャはパラメータの型と順序、戻り値の型によって決まります。同じ名前で戻り値の型が異なる 2 つの関数を定義すると、「戻り値の型と関数のシグネチャが一致しません」エラーが発生します。このエラーを回避するには、同じ戻り値の型を持つように関数シグネチャを変更するか、関数のオーバーロードを使用して、名前は同じだがパラメーター リストが異なる複数の関数を定義します。
以上がC++ エラー: 戻り値の型と関数のシグネチャが矛盾しています。修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。