このエラーメッセージは何を意味しますか?オーバーロードされた関数の呼び出しがあいまいです
error: call of overloaded ‘setval(int)’ is ambiguous
huge.cpp:18: note: candidates are: void huge::setval(unsigned int)
huge.cpp:28: note: void huge::setval(const char*)
私のコードのようになります。
#include <iostream>
#define BYTES 8
using namespace std ;
class huge {
private:
unsigned char data[BYTES];
public:
void setval(unsigned int);
void setval(const char *);
};
void huge::setval(unsigned int t) {
for(int i = 0; i< BYTES ; i++) {
data[i] = t;
t = t >> 1;
}
}
void huge::setval(const char *s) {
for(int i = 0; i< BYTES ; i++)
data[i] = s[i];
}
int main() {
huge p;
p.setval(0);
return 0;
}
私はこの質問に対する答えはあなたが呼び出そうとしている関数のバージョンに依存すると思います。私は仮定することができますが、あなたが私に言わなければ、明らかに私はいずれの方法でも確信が持てません。それはコンパイラでうまくいくのでしょうか?... –
@KonradRudolphリテラル '0'は、' unsigned int'と 'const char *'の両方に対して有効な値です。 –
@ RyanPええ、私は一般的に分かっています。当時私が何を意味していたのか分かりません。特に最後の段落については –