Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 铸造矢量<;int>;到向量<;长期>;当它们大小相同时?_C++_Casting_Reference - Fatal编程技术网

C++ 铸造矢量<;int>;到向量<;长期>;当它们大小相同时?

C++ 铸造矢量<;int>;到向量<;长期>;当它们大小相同时?,c++,casting,reference,C++,Casting,Reference,我有一个引用long向量的函数 Void blarf(std::vector<long>&); 在我的情况下,与此软件的所有情况下,int和long的大小相同。当然,我也不能更改gooddata的定义 在这里什么样的排版比较合适?我尝试了dynamic\u cast,但这仅适用于多态类转换静态播放也不工作。我不是C++型的天才。 < P>不,你不能。code>int和long将保持不同的类型,这将打破严格的别名规则 您可以非常轻松地从向量创建向量: std::vector&

我有一个引用long向量的函数

Void blarf(std::vector<long>&);
在我的情况下,与此软件的所有情况下,
int
long
的大小相同。当然,我也不能更改
gooddata
的定义


在这里什么样的排版比较合适?我尝试了
dynamic\u cast
,但这仅适用于多态类转换<代码>静态播放也不工作。我不是C++型的天才。

< P>不,你不能。code>int和
long
将保持不同的类型,这将打破严格的别名规则

您可以非常轻松地从
向量
创建
向量

std::vector<int> vec{5, 3, 7, 9};
std::vector<long> veclong(begin(vec), end(vec));

Yee,这是丑陋的格式。当我回家的时候,它会修复它。如果你愿意冒未定义的行为,你可以使用<代码> RealTytCase。作为旁白,如果你的代码能负担得起它,考虑模板:<代码>模板无效BARARF(STD::vector &);<代码>或简单地重新插入(vec)
std::vector<int> vec{5, 3, 7, 9};
std::vector<long> veclong(begin(vec), end(vec));
*reinterpret_cast<std::vector<long>*>(&vec)