-3
我定義的簡單轉換方法級轉化工作不正常
operator string() { return /*...*/; }
當我直接調用它
obj.operator string()
它工作正常,但是當我把它這樣...
(string)obj
結果爲空字符串。
發生了什麼事? (我用gcc C++ 14)(能張貼代碼如果需要的話)
類
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_;
};
};
請** **您的問題與[mcve]或[SSCCE(Short,Self Contained,Correct Example)](http://sscce.org) – NathanOliver
爲什麼你公開從'std: :string'然後使用單獨的成員實例?您正在切片,不會調用轉換運算符。 – LogicStuff
好吧,暫時不使用C++,所以不知道你的意思 – Seraph