alternative à strdup

Je suis en train d'écrire une classe C++ pour un livre qui contient un nom:

class Book {
private:
    char* nm;
..........
............
..........
...........
};

Je ne suis pas autorisé à utiliser std::string dans cette mission. Donc ici, je suis en utilisant strdup pour copier la valeur du paramètre nom en nm dans le constructeur:

Book::Book(const char *name, int thickness, int weight)
    : nm(NULL)
    , thck(thickness)
    , wght(weight)
{
    if (name)
        nm = strdup(name);
}

Est-il une alternative d'obtenir le même résultat sans l'aide de strdup, mais en utilisant le mot-clé new à la place?

Habituellement, vous devez utiliser std::string mais que voulez-vous dire exactement par "sans utiliser le C++ STL bibliothèque"? c'est à dire les parties de la bibliothèque standard sont que vous essayez d'éviter (et pourquoi)?
Pourquoi ne pouvez-vous pas simplement utiliser strdup? Vous demandez un outil pour faire quelque chose, tout en refusant d'utiliser la solution idéale.
c'est une contrainte sur la cession... je devrais peut-être ajouter un tag... et oui par STL je veux dire avec de la ficelle
probablement il devrait y avoir un autre tag not-a-real-problem ...
Cette affectation doit avoir été conçu avant strdup faisait partie de la bibliothèque standard. Sûrement la réponse à "Comment voulez-vous dupliquer une chaîne sans strdup?" doit être " Pourquoi serais-je?" 🙂

OriginalL'auteur aherlambang | 2010-03-14