Thông báo lỗi này có ý nghĩa gì?Cuộc gọi của chức năng quá tải là mơ hồ
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*)
Mã của tôi trông như thế này:
#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;
}
Tôi đoán câu trả lời cho câu hỏi này sẽ phụ thuộc vào phiên bản của hàm bạn đang cố gắng gọi. Tôi có thể giả định, nhưng rõ ràng tôi không thể chắc chắn một trong hai cách trừ khi bạn nói với tôi. Điều đó sẽ làm việc với trình biên dịch tôi tự hỏi ... –
@KonradRudolph Chữ '0' là một giá trị hợp lệ cho cả' unsigned int' và 'const char *'. –
@RyanP Yeah, tôi thường biết. Không có ý tưởng những gì tôi có nghĩa là trở lại sau đó. –