2014-11-18 21 views
6

Tôi có một lớp Màu có chứa ba thành phần nổi (r, g, b).Trả về kiểu sai trong C++

tôi phải lập trình chức năng sau:

Màu getColor (giá trị unsigned char [], int i)

Thông thường tôi nên chương trình nó như thế này:

Color getColor(unsigned char values[], int i){ 
    return Color((float) values[i]/255.0, (float) values[i+1]/255.0, (float) values[i+2]/255.0); 
} 

Nhưng bởi lỗi Tôi đã làm

return values[i]; 

Khi tôi biên dịch tôi không nhận được bất kỳ lỗi biên dịch nào và tôi chưa có được lỗi thời gian chạy.

Tại sao điều này có thể xảy ra?

+2

Bạn đang gọi Màu với một hàm tạo có 3 ký tự không dấu. Liệu nó có một constructor với 1 unsigned char quá? ... Sau đó, nó được xây dựng ngầm với nó. – deviantfan

+1

Có bất kỳ hàm tạo nào cho 'Màu' có tham số đơn không? Điều gì xảy ra nếu bạn khai báo chúng là 'tường minh'? –

+3

Vui lòng cho biết cách lớp/cấu trúc màu được xác định. – David

Trả lời

5

Điều này có thể là kết quả của hàm tạo không rõ ràng của lớp Màu chấp nhận ký tự unsigned char làm đối số của nó.

Điều đó có nghĩa bạn có constructor trong lớp màu với đối số duy nhất hoặc nhiều đối số nghỉ ngơi là các thông số mặc định.

0

Kiểm tra xây dựng của bạn trong lớp Color và ghi đè lên với yêu cầu một.

Các vấn đề liên quan