Допустим, у вас есть класс на C ++, как показано ниже:
template<typename T>
class my_class {
public:
private:
std::set<T*> class_set;
int elements_in_set;
}
Я пытаюсь написать конструктор копирования для этого класса, и пока я застрял в следующем, где я знаю только как скопировать целое число elements_in_set
, но я не уверен, как скопировать через набор и сделать глубокую копию того, на что указывают другие class_set
указатели:
my_class(my_class const& other)
: class_set{}, elements_in_set{other.elements_in_set} {
//don't know how to copy over the set
}
Я знаю, что если класс имеет указатель в качестве члена, вы должны использовать new data type[size of data pointer points to]
, но нужно ли вызывать new
, чтобы создать сам набор, а затем new
для каждого указателя в наборе? Любая помощь будет принята с благодарностью. Также было бы неплохо, если бы существовал способ сделать это, используя стандартные библиотечные алгоритмы, а не for
циклы.