C++ 从std::字符串或运算符重载继承
我想上一堂如下的课:C++ 从std::字符串或运算符重载继承,c++,string,class,operator-overloading,C++,String,Class,Operator Overloading,我想上一堂如下的课: Class Test { Test(); ~Test(); ... } std::string str; Test* t = new Test(); str = t; 我希望能够使用以下语句: std::string str; Test t; str = t; 我该怎么办?我应该重写为\u字符串吗?如果是,则似乎无法从std::string类继承。 或者我必须超越特殊操作员? 指针赋值呢?如下图所示: Class Test { Test(); ~T
Class Test {
Test();
~Test();
...
}
std::string str;
Test* t = new Test();
str = t;
我希望能够使用以下语句:
std::string str;
Test t;
str = t;
我该怎么办?我应该重写为\u字符串吗?如果是,则似乎无法从std::string类继承。
或者我必须超越特殊操作员?
指针赋值呢?如下图所示:
Class Test {
Test();
~Test();
...
}
std::string str;
Test* t = new Test();
str = t;
您可以向
std::string
提供用户定义的转换运算符:
class Test {
//...
public:
operator std::string () const {
return /*something*/;
}
};
这将允许<代码>测试对象隐式转换为 尽管在C++中是可能的,但一般不建议继承标准类,请参阅更多信息。
我想知道,任务的功能是什么
str是std::string类型,t是测试类型。那么,分配的预期值是多少?没人能猜到。为了代码清晰,我建议显式调用转换方法或运算符str = t;
str = t.convertToString();
或者更标准的方法是实现stream操作符,这使得
str << t;
另见
尽管这是您问题的完美解决方案,但从长远来看,它可能会带来不可预见的问题,如链接文章中所述。
Test::operator std::string()const
只是我的问题。如果我想将测试类指针分配给std::string,我建议您不要这样做。或者这样做:std::string tmp=my_test;剂量测定法(tmp)代码>我需要。我没有得到你最后的回答。我有一个测试类的指针,需要将它分配给一个字符串
哪种可能更安全,即使它包含更多字符。请注意,某些std类用于继承,例如std异常类。但大多数情况并非如此。