c++ - 如何使用参数初始化作为模板参数给出的类
问题描述
我一直在寻找几个小时来找到一个类似的问题,而我最接近的是找到如何使用默认构造函数进行初始化。
无论如何,下面的类将只接收基类型或创建的类——所有这些都具有相同的构造函数
template<class T>
struct Foo
{
Foo(std::vector<unsigned char> data)
{
T value;
if(std::is_fundamental<T>::value)
memcpy(&value, &data[0], sizeof(T));
else
value = T(data);
}
}
这给了我以下错误:
Error C2440 '<function-style-cast>': cannot convert from 'initializer list' to 'T'
现在,扩大错误给了我这个
with
[
T=float
]
这似乎是说编译器正在使用 float 类型验证这一点,这 - 好吧,它为什么抱怨是有道理的。但是,除了将我的代码分叉为基类型的类和创建的类型的类之外,有什么办法可以摆脱这种情况吗?
解决方案
推荐阅读
- javascript - 为什么从一个字符串中删除多个空格
- google-sheets - 如何根据单元格值将行复制到新选项卡?
- java - 获取 RecyclerView、OnClick 的单个字符串并将此字符串传递给 Google 地图搜索
- javascript - 从javascript中的对象中删除给定条目
- r - 用连续字母标记列中序列的连续运行
- assembly - 当CPU处于内核模式时,它可以读写任何寄存器吗?
- apache-spark - 无法使用 SQL 查询从 PySpark 获取地图对象
- sql - 如何将选择结果存储到同一张表中的新列?
- tensorflow - 如何使用 Tensorflow2.0 alpha 堆叠卷积层和 LSTM?
- asp.net - 如何保护经过身份验证的用户的 WEB API?