I einfache Umwandlungsmethode definiertKlasse Umwandlung funktioniert nicht wie erwartet
operator string() { return /*...*/; }
Als ich es
direkt anrufenobj.operator string()
Es funktioniert gut, aber wenn ich es auf diese Weise nennen ...
(string)obj
Ergebnis ist leere Zeichenfolge.
Was ist los? (Ich bin mit gcc C++ 14) (kann Code schreiben Wenn erforderlich)
Klasse
class String : public std::string {
std::string str_;
public:
String() {};
String(const String & s) {
str_ = std::string(s.str_);
};
String(String && s) {
str_ = std::string(s.str_);
};
String(const string & s) {
str_ = std::string(s);
};
String(const char * s) {
str_ = std::string(s);
};
char & operator[](size_t i) {
return str_[i];
};
String & operator=(const String & str) {
if (this != &str) {
str_ = str.str_;
}
return *this;
};
String & operator=(String && str) {
if (this != &str) {
str_ = str.str_;
}
return *this;
};
bool operator==(const String & str) {
return str_ == str.str_;
};
bool operator!=(const String & str) {
return str_ != str.str_;
};
operator string() {
return str_;
};
};
Bitte ** [edit] ** Ihre Frage mit einem [mcve] oder [SSCCE (Kurzes, eigenständiges, korrektes Beispiel)] (http://sscce.org) – NathanOliver
Warum leiten Sie öffentlich von 'std ab: : string' und dann separate Mitgliedsinstanz? Sie schneiden und rufen den Conversion-Operator nicht auf. – LogicStuff
Nun, nicht mit C++ für eine Weile, also keine Ahnung, was du meinst – Seraph