小编use*_*850的帖子

STL const_iterator强制转换 - 编译器差异

我正在将一大块代码从gcc移植到Visual Studio 2013.以下代码示例在gcc 4.4上工作正常(!),但在VS2013上编译begin()end()失败:

错误C2440:'':无法从'unsigned char*'转换为'std :: _ Vector_const_iterator >>'

class foo {
    unsigned char* value;
    int length;

    std::vector<unsigned char>::const_iterator begin();
    std::vector<unsigned char>::const_iterator end();
};

std::vector<unsigned char>::const_iterator foo::begin() {
    return std::vector<unsigned char>::const_iterator(value);
}

std::vector<unsigned char>::const_iterator foo::end() {
    return std::vector<unsigned char>::const_iterator(value + length);
}
Run Code Online (Sandbox Code Playgroud)

鉴于我不想重写整个事物,是否有可行的方法来创建这些const_iterators?

c++ gcc stl const-iterator visual-studio-2013

3
推荐指数
1
解决办法
461
查看次数

标签 统计

c++ ×1

const-iterator ×1

gcc ×1

stl ×1

visual-studio-2013 ×1