Tôi muốn tạo một hàm sẽ kiểm tra xem các tham số có nằm ngoài phạm vi không.So sánh các loại khác nhau trong mẫu
Tôi đã viết này:
template<typename X,typename Y,typename Z >
void checkParameter(X val, Y lower, Z upper)
{
if((val > upper) || (val < lower))
{
log("checkParameter, val = % , lower= % , upper= % \n", val,
lower,upper);
ASSERT(false);
}
}
Tuy nhiên, khi tôi làm điều này
uint32_t var = 5000;
checkParameter(var, 0, 262143);
tôi nhận được cảnh báo:
warning: comparison between signed and unsigned integer expressions
Làm thế nào tôi có thể làm cho một chức năng mà một cách an toàn sẽ xử lý tất cả các loại?
'checkParameter (var, 0u, 262143u)' nên loại bỏ cảnh báo. – Jarod42
Tại sao bạn sử dụng ba loại thay vì một loại? Trường hợp giá trị của loại có thể khác với giới hạn của nó là bao nhiêu? – borisbn
@borisbn nó rất dễ dàng cho điều đó xảy ra – o11c