我想用一些静态模板信息和相同的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编译器。