operator []编译器错误和警告

吉多·兰祖利亚(Guido Ranzuglia)

可能是因为我整夜没睡...但是有人可以解释一下为什么第一个运算符[](const one)在MSVC 2010中生成警告,说我要返回一个临时变量的地址,并且第二个operator [](非const运算符)产生编译器错误,指出:'return':无法从'std :: _ Vb_reference <_Alloc>'转换为'bool&'?!?!?

非常感谢大家,您会在我的问题上浪费时间。

    class ReqAtts
    {
    public:
        const bool& operator[](size_t ii) const
        {
            return _atts[ii];
        }

        bool& operator[](size_t ii)
        {
            return _atts[ii];
        }

    private:
        std::vector<bool> _atts;

    };
德米特里·扎卡布卢科夫(Dmitriy Zakablukov)

std::vector<bool>在大多数实现中(g ++,MSVC)是节省空间的:每个项目都可以存储为一个位,而不是布尔值。您可以在此处了解更多信息:en.cppreference.com

您有2个选择:

  1. 使用std::vector<unsigned char>(或其他整数类型)代替std::vector<bool>
  2. 使用std::vector<bool>::reference的返回类型operator[]如下:

    class ReqAtts
    {
    public:
        std::vector<bool>::const_reference operator[](size_t ii) const
        {
            return _atts[ii];
        }
    
        std::vector<bool>::reference operator[](size_t ii)
        {
            return _atts[ii];
        }
    
    private:
        std::vector<bool> _atts;
    
    };
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Operator Cast,GCC和clang:哪种编译器正确?

来自分类Dev

编译器不使用operator <<

来自分类Dev

CLion:启用编译器错误/警告

来自分类Dev

所有Visual Studio编译器错误和警告的列表及其编号

来自分类Dev

由于编译器错误和警告,我无法运行JFrame

来自分类Dev

C,编译器错误和指针

来自分类Dev

VSCode,Paket和编译器错误

来自分类Dev

如何使Kotlin编译器将警告视为错误?

来自分类Dev

编译器警告枚举

来自分类Dev

Dagger编译器警告

来自分类Dev

编译器警告混合数组和多态

来自分类Dev

声明的参数限制和编译器警告

来自分类Dev

编译器和编译器

来自分类Dev

为什么Mingw-w64 gcc编译器会生成关于%zd和%a格式的错误警告

来自分类Dev

解析编译器语法和错误的错误恢复

来自分类Dev

泛型和迭代器的Java编译器错误

来自分类Dev

C ++编译错误-不匹配'operator ='

来自分类Dev

什么是 ?和@符号表明此编译器错误?-Visual Studio 2013编译器

来自分类Dev

什么是 ?和@符号表明此编译器错误?-Visual Studio 2013编译器

来自分类Dev

为什么在执行operator <<时编译器为什么不能使用类的std :: string转换函数?

来自分类Dev

委托/功能转换和误导的编译器错误消息

来自分类Dev

编译器的信号和错误之间的区别(SBCL 1.2.4)

来自分类Dev

Windows 8 SFML和代码块的编译器错误

来自分类Dev

C和DLC编译器的奇怪解析错误

来自分类Dev

流和减少的Java 8编译器错误

来自分类Dev

ndk和clang ++中的ARM编译器错误?

来自分类Dev

使用constexpr和lambda时的编译器错误

来自分类Dev

C和DLC编译器的奇怪解析错误

来自分类Dev

编译器的信号和错误之间的区别(SBCL 1.2.4)

Related 相关文章

热门标签

归档