c++ - 如何将 int/float 可变参数推入向量?
问题描述
class Entity
{
private:
std::vector<double> m_Numbers;
public:
template<typename... Args>
Entity(Args... parameters)
: m_Numbers{ parameters... } {}
};
int main()
{
Entity e1(5, 7);
}
没想到vector没有把int
s转换成double
s,抛出了一个错误:
C2398 | 元素'0':从'int'到'_Ty'的转换需要缩小转换`
有没有办法std::vector<double>
接受任何数字类型(例如int
/ float
/ uint32_t
)?
解决方案
您可以执行显式转换为double
.
: m_Numbers{static_cast<double>(parameters)... } {}
问题是std::vector
' 的构造函数需要double
s ,因为这是它存储的类型。由于您使用大括号初始化进行构造,因此不允许隐式转换,因此会发出警告(尽管使用 gcc 我只会收到警告)。
推荐阅读
- visual-studio - 加载任何项目后如何让 VS 2017 运行一些自定义代码?
- javascript - ES6:当 ID 存在时,使用来自另一个对象的值填充对象值
- reactjs - Webpack watch 编译我的 scss sass 但不是 webpack-dev-server
- actionscript - 使用动作脚本拖放
- google-cloud-platform - GCP:云函数图
- sql - SQL - 根据多列的值获取重复列表
- r - 将 df 从因子转换为数值
- java - 如何解决此错误:HTTP 状态 500 - 内部服务器错误
- performance - 使用更高的 mip 级别优化纹理提取
- c++ - 如何使用抛出析构函数检测构造函数是否为 noexcept