【发布时间】:2016-05-16 16:41:28
【问题描述】:
如何在不复制数据的情况下将std::vector<const unsigned char> 转换为const std::vector<unsigned char>?
Parser::Parser( const std::vector< unsigned char > &i_Data )
{
Parse(i_Data);
}
Parser::Parser( std::vector< const unsigned char > i_Data )
{
Parse( (std::vector< unsigned char >)(i_Data) ); // <-- Error
}
int Parser::Parse( const std::vector< unsigned char > &i_Data )
{ ... }
这是来自 Visual C++ 2010 的错误消息:
错误 C2440 'type cast':无法从 'std::vector<_ty>' 转换为 'std::vector<_ty>'
【问题讨论】:
-
我假设您正试图避免复制数据。对吗?
-
@NathanOliver:正确。
-
你应该休息一下,想想你为什么要这样做..
-
std::vector<const unsigned char>无论如何都是未定义的行为。 -
@NathanOliver 在 C++03 中,容器元素必须是
Assignable;在 C++11 及更高版本中,分配器要求禁止const值类型。