В вашем конструкторе копирования вы используете
*this = other; //(1)
, который вызывает
tDataStruct& operator=(tDataStruct other) //(2)
, поскольку other
передается по значению, необходимому для создания копии.Затем он вызывает 1
, который вызывает 2
, который затем вызывает 1
, который затем вызывает 2
и раунд и раунд, по которому вы будете идти, пока программа не завершится сбоем / завершится.
Вам необходимовозьмите other
по ссылке, чтобы вы на самом деле не делали копию, такую как
tDataStruct& operator=(const tDataStruct& other)
Все это говорит о том, что вы делаете это задом наперед.Вы должны использовать копировать и поменять идиому и реализовать ваш operator =
с помощью вашего конструктора копирования.