c++ - 使用静态信息创建字符串类
问题描述
我想用一些静态模板信息和相同的 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。
解决方案
推荐阅读
- javascript - 如何在表格中显示数据?
- python - 如何运行 time.sleep() 以分钟而不是秒为单位传递?
- core-data - 这段代码会产生保留周期吗?(核心数据执行)
- ruby - 红宝石中的机架是什么?红宝石中的美洲狮是什么?
- rest - 当当前用户禁止连接点时,我的服务器是否应该为 HTTP OPTIONS 方法返回 200?
- regex - 多个字符的正则表达式匹配
- amazon-s3 - aws s3 cp 将文件下载到匹配文件名的本地
- java - 可选或默认的泛型参数
- javascript - 从 Javascript 中的 HTML 表单获取数据总是产生字符串?
- kotlin - 有没有优雅的方法可以在 kotlin 和箭头中将 List 变成 NonEmptyList?