Tôi có một thành viên của lớp A trong lớp của riêng tôi mà hàm tạo có nhiều tham số. Im chuyển tiếp các tham số của lớp riêng của tôi đến constructor của lớp A. Nhưng quan trọng là các tham số này là chính xác, vì vậy tôi cần kiểm tra chúng trước khi cấu trúc thành viên của A. Và heres vấn đề: Tôi có thể bỏ qua các thành viên trong danh sách intialization thành viên, hiệu quả gọi hàm dựng mặc định. Sau khi kiểm tra trong constructor tôi có thể gọi A constructor trong một assigment. Mặc dù, điều này tạo ra một lỗi vì destructor của A là riêng tư.Thực hiện kiểm tra trước khi khởi tạo danh sách
Làm cách nào để giải quyết vấn đề này?
MyClass::MyClass(int someParam) : otherMember(2){
//checks for someParam
member = A(someParam); // <- produces error
}
Nói chuyện với tác giả của lớp 'A' và ép buộc cô ấy làm cho hàm tạo của' A' hoạt động hợp lý trong trường hợp giá trị tham số bất hợp pháp. –
Có thể chấp nhận xây dựng 'A' và sau đó kiểm tra sau khi thực tế? – Cameron
Tôi thực sự đã cố gắng thuyết phục Sun thực hiện điều này trong Java, nhưng họ đã từ chối. Nó dễ dàng hơn để lừa trong Java bởi vì bạn có thể gọi một hàm khởi tạo từ một hàm khác. – Neil