Вы должны быть в состоянии сделать простое назначение:
*pvi = Vih;
Если разработчик класса выполнил свою работу правильно, то это обеспечивает пригодную для использования копию значения (вызывая оператор присваивания - там также должны бытьбыть конструктором копирования и, вероятно, нетривиальным деструктором).Если дизайнер классов испортил задание, найдите лучшую библиотеку классов (или обучите дизайнера классов).
Ваша частичная инициализация Vih
предполагает, что могут быть проблемы с дизайном класса.Конструкторы предназначены для инициализации классов, и если класс имеет много общедоступных компонентов, может быть много проблем, скрывающихся в крыльях.
Возможно, вам также следует использовать new
для выделения pvi
, иотсюда и конструктор;почти наверняка вы не должны использовать ZeroMemory()
для удаления вновь выделенной переменной.Ваш языковой тег 'C ++ `;код подсказывает (не очень хорошо написано) мышление на C - не мышление на C ++.
Если вы дизайнер классов, вам необходимо рассмотреть некоторые основы проектирования классов.
Какие классы могут быть скопированы с помощью присваивания?
Два набора классов могут быть скопированы с помощью присваивания без страха.
Классы, содержащие простые не указательные элементы данных - POD или 'классы простых старых данных.Эти классы могут использовать оператор присваивания, созданный компилятором.Как только у вас появятся указатели, вы должны начать беспокоиться.Однако, если в классе есть (не POD) члены, которые имеют действительный оператор присваивания, вы все равно можете использовать оператор присваивания по умолчанию, созданный компилятором.
Классы с правильносозданный оператор присваивания.Здесь разработчик класса решает все вопросы, связанные с созданием копии данных, дублированием выделенной памяти или использованием счетчиков ссылок и методов копирования при записи (CoW) для минимизации работы.Такие классы также имеют правильно созданный конструктор копирования - и почти всегда деструктор.Классы предназначены для упрощения выполнения присваивания и передачи значений в функции и т. Д.
Классы, содержащие указатели без явного оператора присваивания (и конструктора копирования, и деструктора), должныбыть рассмотрены по существу.Иногда нормально копировать такие классы;чаще это не так.