Прежде всего, ваш первый кусок кода не компилируется и не имеет смысла.second_people
не указывает ни на один объект, поэтому вы не можете назначить копию несуществующему объекту.Вместо этого вы должны написать
People* my_people = new People("name","lname");
People* second_people = new People(*my_people);
, предполагая, что вы уже реализовали Правило трех , как и должно быть.
Теперь вернемся к вопросу.Для C ++ / Cli вы также должны реализовать конструктор копирования и оператор присваивания, например
People(const People % other) { ... }
const People % operator = (const People % other) { ... ; return *this;}
И если мы применим это к вашему вопросу:
People^ my_people = gcnew People("name","lname");
People^ second_people = gcnew People(*my_people);