Tôi thấy rằng việc tạo lớp không thể sao chép sẽ giúp tôi rất nhiều với chất lượng mã của tôi. Ban đầu tôi đã làm điều này với boost :: noncopyable, nhưng tôi thấy lỗi trình biên dịch VC++ không phải là hữu ích như với các thành viên cá nhân (nhấp đúp dẫn đến vị trí sai trong mã).C++ Không thể sao chép ngoại trừ đôi khi
T(T const&);
T& operator=(T const&);
Thật vậy, nó đã cảnh báo cho tôi một số trường hợp là các lớp không được chuyển làm tài liệu tham khảo mà họ nên có. Vì vậy, nhiều như vậy, rằng tôi rất muốn có được một cảnh báo ngay cả trên các lớp học mà tôi chỉ cần sao chép xây dựng một lần.
Có cách nào tốt để thực hiện việc này không? Tôi đã suy nghĩ ví dụ để lại trên hai phương pháp riêng và thêm một công T (T const &, bool dummy) constructor để gọi khi tôi thực sự muốn sao chép xây dựng. Hoặc có thể cách khác làm cho trên hai phương pháp công khai và bằng cách nào đó kích hoạt một cảnh báo trình biên dịch khi xây dựng bản sao, ngăn chặn các cảnh báo mà tôi muốn.
Hoặc có thể có một cách tốt hơn?
Tôi thích câu trả lời này tốt nhất. Vấn đề với các nhà xây dựng bản sao, theo kinh nghiệm của tôi, là khi họ được gọi "vô tình" trên một số đối tượng khổng lồ. '' rõ ràng buộc bạn phải suy nghĩ về nó khi bạn gọi chúng, điều này là đủ. – Nemo
Chúc mừng, điều này hoàn toàn phù hợp với nhu cầu của tôi. Cảm ơn. – Cookie