tôi có thể cần phải suy nghĩ lại thiết kế tổng thể của tôi hơn một chút, nhưng vì nó đứng, có vẻ như tôi có thể muốn làm một cái gì đó như:Bạn có thể sử dụng tăng :: shared_ptr làm chìa khóa cho bản đồ không?
class A;
class B;
std::map<boost::shared_ptr<const A>, B> APtrToBMap;
tôi đã cố gắng này, và nó dường như làm việc trong một trường hợp đơn giản (trình biên dịch không phàn nàn, và các xét nghiệm đơn giản dường như hoạt động). Nhưng tôi có suy nghĩ thứ hai về cách tiếp cận này. Tôi nghi ngờ có một số gotchas trong đó mà tôi không biết.
Vì vậy, giá trị trên có hợp lệ không? Hoặc là có một số lỗ hổng tôi không biết khi tôi làm điều này?
những gì không hoạt động? –
@Sam, chỉ vì bạn chưa phát hiện ra sự cố chưa có nghĩa là nó không tồn tại. Tôi nghĩ rằng đó là một ý tưởng tuyệt vời để hỏi về các vấn đề tiềm năng cho việc sử dụng không chuẩn như thế này. –
Cảm ơn mọi người đã trả lời. Như một số bạn đã lưu ý, nó chủ yếu là một triệu chứng của một thiết kế xấu; Tôi đã cố gắng giải quyết một vấn đề ở sai chỗ. Tôi đã xem xét lại thiết kế của mình và không cần phải làm bản đồ xấu mà tôi đã hỏi. Các phản ứng về lý do tại sao đây là một ý tưởng tồi quá đã thực sự khai sáng; Tôi biết trong ruột của tôi nó sẽ không hoàn toàn làm những gì tôi đang tìm kiếm để làm; Tôi chỉ không thể thấy tại sao cho đến bây giờ. (Trong thực tế những gì tôi đã cố gắng để làm sẽ không làm việc với bản đồ tôi templated ở trên) – Taeolas