이 오류 메시지는 무엇을 의미합니까?오버로드 된 함수 호출이 모호합니다.
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 예, 일반적으로 알고 있습니다. 그때 내가 무엇을 의미하는지 모르겠다. –