使用静态信息创建字符串类

时间:2018-11-02 17:52:46

标签: c++ string c++11 inheritance

我想用一些静态模板信息和相同的std :: string接口创建字符串类。 我懒于包装std :: string,所以我尝试使用公共继承和构造函数继承:

#include <string>
using std::string;

template <typename Type = uint16_t>
class MyString : public string {
public:
   using string::string;
   using str_len_size = Type;
};

此代码编译没有问题,我无法从const char *构造MyString:

MyString<uint16_t> str{"hello"};//OK

但是当我尝试从std :: string构造MyString或将std :: string分配给它时,出现编译错误:

std::string std_str{"hello"};
MyString<uint16_t> str{std_str};// error: no matching function for call ...

std::string std_str{"hello"};
MyString<uint16_t> str;
str = std_str;// error:  no known conversion for argument 1 from ‘std::string {aka std::basic_string<char>}’ to ‘lottery::base::MyString<short unsigned int>&&’

为什么我不能从std :: string构造并分配MyString,如何实现呢?

我使用的是gcc 7.3.1编译器。

0 个答案:

没有答案