lorsque vous faitesConstructor ne fonctionne pas pour la classe héritée de std :: string
#include <string>
class MyString : public std::string
{
public:
MyString() {}
};
Mais l'utilisation ci-dessous:
MyString s = "Happy day";
MyString s("Happy Day");
MyString s = (MyString)"Happy day";
aucun d'eux fonctionne.
Il semble qu'il y ait quelque chose à faire avec les constructeurs/opérateurs de déclaration/dépassement de capacité, mais est-ce que quelqu'un peut aider à indiquer où trouver ces ressources?
Merci.
Lorsque vous héritez, vous masquez les opérateurs non-par défaut de la classe de base. Si vous voulez appeler ces constructeurs, vous devez définir des contructeurs non-par défaut dans votre sous-classe qui les invoquent. – ChrisW
Vous n'êtes pas censé hériter de std :: string. Vous pouvez le dire par le fait qu'il n'a pas de destructeur virtuel. Vous vous ouvrez à beaucoup de problèmes potentiels. Rendre std :: string un membre. –