"C2668: 'abs' : オーバーロード関数の呼び出しを解決することができません。" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
error C2668: 'abs' : オーバーロード関数の呼び出しを解決することができません。<ファイル名>: '__int64 abs(__int64)' の可能性があります。

ソース(バグ有り):

#include <stdio.h>
#include <stdlib.h>

//絶対値を表示
int main()
{
double number = -1;

printf("abs(%d) = %d\n",number, abs(number));
return 0; }


原因:
関数に渡す引数の型が異なります。指定された型を引数とするオーバロードされた関数も定義されていません。


対処:
関数に渡す引数の型を見直します。この例ではabs は int 型を要求しているため、double 型からint型に修正します。


ソース(修正済み):

#include <stdio.h>
#include <stdlib.h>

//絶対値を表示
int main()
{
int number = -1;

printf("abs(%d) = %d\n",number, abs(number));
return 0; }

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]