首先,我知道该std::string
课程具有我可能需要的所有功能.这仅用于测试目的,以了解我将来能够做些什么.
无论如何,说我有这个:
class MyString : public std::string { }
Run Code Online (Sandbox Code Playgroud)
那么我怎么会使用:
MyString varName = "whatever";
Run Code Online (Sandbox Code Playgroud)
因为肯定我会得到一个错误,因为"什么"是一个std :: string而不是MyString类的成员?
如果你理解我的意思,我该如何解决这个问题?
(顺便说一句,我知道这可能是一个非常愚蠢的问题,但我很好奇)
从类中派生只是为了添加成员函数并不是一个好主意; 特别是像非多态的类std::string
.相反,编写非成员函数以使用现有字符串类执行任何操作.
如果你真的想这样做,你可以继承构造函数:
class MyString : public std::string {
public:
using std::string::string;
};
Run Code Online (Sandbox Code Playgroud)
现在,您可以以可以初始化的任何方式初始化类std::string
,包括从示例中的字符数组转换.(顺便说一句,"whatever"
不是a std::string
,它是一个零终止的字符数组,const char[9]
.)
归档时间: |
|
查看次数: |
286 次 |
最近记录: |