Constructeur de copie explicite

J'ai étendu std::string pour combler mon besoin d'avoir à écrire fonction personnalisée construire en classe string appelé CustomString

J'ai défini les constructeurs:

    class CustomString : public std::string {
    public:
        explicit CustomString(void);
        explicit CustomString(const std::string& str);
        explicit CustomString(const CustomString& customString);
        //assignment operator
        CustomString& operator=(const CustomString& customString);
    ... };

Dans le troisième constructeur (constructeur de copie) et l'opérateur d'affectation, dont la définition est:

CustomString::CustomString(const CustomString& customString):
    std::string(static_cast<std::string>(customString)) 
{}
CustomString& CustomString::operator=(const CustomString& customString){
    this->assign(static_cast<std::string>(customString));
    return *this;
}

Première puisque c'est "explicite", ce qui signifie un cast explicite est nécessaire pour affecter à un autre CustomString objet; il se plaint de la cession.

CustomString s = CustomString("test");

Je ne suis pas sûr exactement où est coulée nécessaire explicitement.

Le code fonctionne très bien si le constructeur de copie n'est pas explicite, mais je voudrais savoir et de mettre en œuvre définition explicite au lieu de "deviner la bonne fonte".

source d'informationauteur abumusamq