这个错误信息是什么意思?重载函数调用不明确
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