これをコンパイルする方法はありますか?コンパイルの問題
とすると、デフォルトの整数でfctが使用されるようにしますか?
g ++を使用。
#include <stdio.h>
int fct(int a = 0)
{
printf("a: %d\n", a);
return (0);
}
void fct()
{
}
int main(void)
{
fct();
return (0);
}
これをコンパイルする方法はありますか?コンパイルの問題
とすると、デフォルトの整数でfctが使用されるようにしますか?
g ++を使用。
#include <stdio.h>
int fct(int a = 0)
{
printf("a: %d\n", a);
return (0);
}
void fct()
{
}
int main(void)
{
fct();
return (0);
}
いいえ、あなたはfct(int)
コンパイラにデフォルト値を追加したら、あなたが呼び出したいどれを推測することはできませんので:
fct(int)
引数fct()
あなたができることは、デフォルト値を削除し、fct(0)
に電話するか、引数なしで完全に削除してください。
C++はあいまいなコードをコンパイルできません。あいまいさがコード内にあれば、それを解決しようとする必要があります。
戻り値の型だけが異なる関数はオーバーロードできません。
例については、このリンクをクリックしてください。 http://xania.org/200711/ambiguous-overloading
は以下のみ動作します:
#include <stdio.h>
int fct(int a)
{
printf("a: %d\n", a);
return (0);
}
void fct()
{
printf("a: 0\n", a);
}
int main(void)
{
fct();
return (0);
}
あなたは一人で戻り値の型で関数をオーバーロードすることはできません。私はあなたのケース int fct(int a = 0)
のために生成される関数は2つの機能(引数で1、なしの1)が生成されますダウンリストしてみましょう:あなたは別の方法 void fct()
を導入している上記の機能に加えて int fct(int a)
とint fct()
をだから、あなたは2を持っています戻り値の型C++で void fct()
とint fct()
によって異なった方法では、あなたはは
だけで戻り値の型の変化に機能を過負荷にすることはできません私はあなたが何語「あいまいな」手段を見てください。 –
'int fct(int a = 0)'は値 – triclosan
を返さなければなりません。 – trojanfoe