làm thế nào tôi có thể chèn các đối tượng lớp của riêng mình vào ptr_map để tăng cường. Các đối tượng được templated vì vậy tôi không thể sử dụng một số typename tĩnh trong bản đồ. Vì vậy, tôi đã làm:Tăng cường việc sử dụng
ptr_map<string, any> someMap;
Lớp học của tôi được thừa hưởng các tăng :: noncopyable.
someMap.insert("Test", new MyClass<SomeTemplate>());
Lỗi này là: lỗi: no matching function for call to ‘boost::ptr_map
.
UPD: tôi muốn thực hiện một số wrapper và không sử dụng bất kỳ đẩy mạnh ::. Vì vậy:
class IWrapper { };
class MyClass : public IWrapper { };
ptr_map<string, IWrapper> someMap;
someMap.insert("Test", new MyClass<SomeTemplate>());
Tại sao nó không hoạt động (cùng một lỗi)? Tôi có thể vượt qua lớp kế thừa vào giao diện cha. Chuyện gì vậy?
Clas của tôi được tô điểm. Tôi đã cập nhật mẫu. Tôi không thể làm cho một số cơ sở cho nó (không có mẫu). – Ockonal
Ok, cảm ơn. Cách với bất kỳ nên làm việc. Nhưng bạn có thể xem xét cập nhật mã mới không? Tôi đã cố gắng để thực hiện ý tưởng đầu tiên của bạn. – Ockonal