Я думаю, что проблема в вашем операторе копирования. Вы используете memcpy()
, которая является c функцией. Что само по себе не должно быть проблемой (кроме того, что это не так приятно во многих отношениях) Но поскольку memcpy () является функцией c, она не знает о типах и принимает аргументы своего размера в виде количества байтов.
элемент, который вы вставили, равен int
, что, вероятно, составляет 4 байта. Поэтому, когда вызывается ваш экземпляр contstructor, а оригинал содержит 3 элемента, в вашем массиве будет 12 байт, но mallo c скопирует только 3 из них.
Комментарии других людей о неправильных комментариях Копирование шаблонов правильное, поэтому, если вы создадите вектор строк, вы не сможете просто запоминать их и предполагать, что результатом будут новые строки. Для этого ответа я предполагал, что вы используете только базовые c типы в качестве аргументов шаблона, такие как int или double.