Я буду использовать std::map<int, A>
Могу ли я предотвратить конструктор копирования с некоторым исключением?
A
класс, и я должен предотвратить неполную копию, но есть много классов, как A
, так что делают глубокое копирование конструкции и оператор утомительно. Поскольку кажется, что мне не нужно использовать конструктор копирования и оператор присваивания копии, Я решил не использовать их.
Чтобы предотвратить некоторые ошибки, я создал класс UnCopyable, у которого есть собственный экземпляр constuctor и оператор присваивания копий, и A
унаследовал его.
Однако есть одна проблема. std::map
используйте конструктор копирования.
Я не хочу, чтобы спрятать указатель A
на карте.
Какое лучшее решение?
Вы можете сохранить умный указатель ('std :: shared_ptr ') в качестве значения вместо необработанного указателя, если это явное удаление, о котором вы беспокоитесь. – hmjd
Почему это невозможно для копирования? Потому что у кого-то есть указатель на него или просто потому, что надлежащая копия должна быть глубокой? Вы можете подумать о реализации семантики «move» в конструкторе копирования, если знаете, что он будет только когда-либо скопирован из временного. – Potatoswatter
Я решил эту проблему, используя класс handle. –