這個錯誤信息是什麼意思?重載函數調用不明確
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;
}
我想這個問題的答案將取決於你試圖調用哪個版本的函數。我可以假設,但顯然我不能肯定,除非你告訴我。這將與編譯器一起工作,我想知道...... – 2011-01-12 17:59:25
@KonradRudolph字面值`0`是`unsigned int`和`const char *`的有效值。 – 2017-03-23 22:47:47
@RyanP是的,我通常意識到。不知道我當時的意思。 – 2017-03-23 22:51:06