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*/;
  }
};

这将允许<代码>测试对象隐式转换为 STD::String .< /P>

尽管在C++中是可能的,但一般不建议继承标准类,请参阅更多信息。 我想知道,任务的功能是什么

str = t;
str是std::string类型,t是测试类型。那么,分配的预期值是多少?没人能猜到。为了代码清晰,我建议显式调用转换方法或运算符

这将使您的示例看起来像:

str = t.convertToString();
或者更标准的方法是实现stream操作符,这使得

str << t;
另见


尽管这是您问题的完美解决方案,但从长远来看,它可能会带来不可预见的问题,如链接文章中所述。

Test::operator std::string()const
只是我的问题。如果我想将测试类指针分配给std::string,我建议您不要这样做。或者这样做:
std::string tmp=my_test;剂量测定法(tmp)我需要。我没有得到你最后的回答。我有一个测试类的指针,需要将它分配给一个字符串
哪种可能更安全,即使它包含更多字符。请注意,某些std类用于继承,例如std异常类。但大多数情况并非如此。