首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

operator[]重载的内部类不起作用

在C++中,operator[]是一种重载运算符,用于访问类对象中的元素。然而,如果operator[]重载的内部类不起作用,可能是由于以下几个原因:

  1. 内部类的定义错误:请确保内部类的定义正确,并且已经包含在类的定义中。内部类应该在类的私有部分进行定义,并且在operator[]函数中进行访问。
  2. 内部类的对象未正确创建:在使用operator[]访问内部类对象之前,需要先创建该对象。请确保在使用operator[]之前,已经正确创建了内部类的对象。
  3. 内部类的访问权限限制:请确保内部类的访问权限设置正确。如果内部类的访问权限设置为私有(private),则只能在类的内部进行访问,无法在类的外部使用operator[]访问内部类对象。
  4. operator[]函数的实现错误:请检查operator[]函数的实现是否正确。确保在函数中正确地访问内部类对象,并返回所需的结果。

总结起来,如果operator[]重载的内部类不起作用,需要检查内部类的定义、对象的创建、访问权限以及operator[]函数的实现。如果问题仍然存在,可能需要进一步调试和查找其他可能的原因。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云C++ SDK:https://cloud.tencent.com/document/product/876
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 【C++初阶】—— 类和对象 (下)

    运算符重载 运算符重载 在一个自定义变量里,如果我们想实现对它加减乘除,是无法直接使用,因此C++为了增强代码可读性引入了运算符重载,运算符重载是具有特殊函数名函数 关键字operator 后面接需要重载运算符符号...赋值运算符只能重载成类成员函数不能重载成全局函数 // 假设我们在类外面重载成全局函数 // 注意:在类外是没有 this 指针 Date& operator=(Date& this, const...,如果没有则会根据权限来调用 // 本质是:权限能缩小,但是不能放大 // 及非const对象可以调用const成员函数 // 非const成员函数可以调用其它const成员函数 Date...Date* operator&() { return this ; } const Date* operator&()const { return this ; } 这两个运算符一般不需要重载,使用编译器生成默认取地址重载即可...友元分为: 友元函数 友元类 友元函数 如果尝试去重载operator<<,我们发现没办法将operator<<重载成成员函数,因为函数参数位置不一样,cout输出流对象和隐含this指针在抢占第一个参数位置

    6510

    【C++入门篇】保姆级教程篇【下】

    此时我们再次进行测试: 这个时候我们发现,这样还是不对啊,大家可千万别忘记了,在类是存在this指针,成员函数第一个参数为this指针,这是隐藏参数,所以在类我们要这样写: bool...-和operator-=这两个运算符重载,这两个重载和前面的+和+=实现不太一样,尤其是operator-,它并不是返回类类型,而是返回天数,因为日期相减意义是差几天。...3、const 成员函数可以调用其他非const成员函数吗? 4、非const 成员函数可以调用其他const成员函数吗?...注意此时这个内部类是一个独立类,它不属于外部类,更不能通过外部类对象去调用内部类。外部类对内部类没有任何优越访问权限。 注意: 内部类就是外部类友元类。...注意友元类定义,内部类可以通过外部类对象参数来访问外部类所有成员 。但是外部类不是内部类友元。

    13310

    c++类与对象(五):友元、内部类、临时对象、匿名对象

    友元包括:友元函数和友元类 1.1友元函数 友元函数可以直接访问类私有成员,它是定义在类外部普通函数,不属于任何类,但需要在类内部声明,声明时需要在前面加friend关键字 之前我们在重载...>时已经使用过了,一开始发现重载成成员函数不行。...因为cout输出流对象和隐含this指针在抢占第一个参数位置。如果重载为成员函数:this指针默认是第一个参数也就是左操作数了 但是实际使用中cout需要是第一个形参对象,才能正常使用。...所以要将operator<<重载成全局函数。但又会导致类外没办法访问成员,此时就需要友元来解决。...内部类是一个独立类,它不属于外部类,更不能通过外部类对象去访问内部类成员。 外部类对内部类没有任何优越访问权限 内部类构造函数不能直接初始化外部类对象。

    22710

    CC++对bool operator < (const p &a)const认识,运算符重载详解(杂谈)

    运算符函数定义与其他函数定义类似,惟一区别是运算符函数函数名是由关键字operator和其后要重载运算符符号构成。...:"以外,C++中所有运算符都可以重载。 (2) 重载运算符限制在C++语言中已有的运算符范围允许重载运算符之中,不能创建新运算符。...(5) 运算符重载不能改变该运算符用于内部类型对象含义。它只能和用户自定义类型对象一起使用,或者用于用户自定义类型对象和内部类对象混合使用时。...:“以外,C++中所有运算符都可以重载重载运算符限制在C++语言中已有的运算符范围允许重载运算符之中,不能创建新运算符。...运算符重载不能改变该运算符用于内部类型对象含义。它只能和用户自定义类型对象一起使用,或者用于用户自定义类型对象和内部类对象混合使用时。

    2.4K61

    【C++】类和对象核心总结

    函数名字为:关键字operator后面接需要重载运算符符号。 函数原型:返回值类型 operator操作符(参数列表) a....,在使用>流提取运算符时候,就会调用类中相应operator>>函数和operator<<函数,所以自动识别类型本质还是运算符重载。...& d); //利用友元便可以解决类外函数无法访问到类私有成员变量问题。...和拷贝构造比较相似的是,对于内置类型,赋值重载也是浅拷贝,一旦内置类型涉及到开辟空间时,浅拷贝就不起作用了,这个时候就需要深拷贝,对于自定义类型,赋值重载会调用该类类型赋值重载。...内部类是一个独立类,它不属于外部类,更不能通过外部类对象去访问内部类成员。外部类对内部类没有任何优越访问权限。

    72730

    Kotlin学习笔记(四)-面向对象

    - default (包可见) internal (模块Module可见) - public public object类关键字 object修饰类只有一个实例类 本质上就是单例模式最基本实现...伴生对象成员类似Java静态成员 静态成员考虑用包级函数、变量替代 JvmField 和JvmStatic使用后,可以用相同语法在Java中调用 方法重载 与Java相同,,需要注意一下几点 方法重载与默认参数...返回值类型不能作为方法签名一部分 只有参数列表和方法名 重载时如果不能用默认参数解决重载 不是一个好设计 例如 list.remove 默认参数 可以参数 不传参数用默认值 这个方法java要调用...(非静态内部类持有外部类引用,而静态内部类无法持有外部类引用,这是因为静态内部类优先于非实例对象而存在) 内部类和静态内部类区别: 是否持有外部类状态(也就是非静态内部类中可以调用 外部类.this...println(this@Outter.a)//当内外部类重载相同属性或方法时 通过this@Outter访问 println(this@Inner1

    85110

    【笔记】《C++Primer》—— 第19章:特殊工具与技术

    ,不过和new相反,实际上会先调用析构函数将指针区域对象析构,然后调用一个称为operator delete标准库函数释放内存空间 以上我们就可以理解了,new和delete实际上是一系列写好操作...,我们真正能重载是构造函数析构函数和两个operator函数,通常我们说重载new和delete就是指重载两个operator函数 在运行时候,编译器会查找可调用operator,和通常查找一样...同样我们可以使用全局访问符来忽略掉我们自己定义在类函数 和我们习惯一样直接使用new和delete时候是不需要头文件,但是如果我们需要重载operator new/delete的话我们需要包含头文件...,让外部访问不同成员时按照情况析构union目前成员,构造新成员 19.7 局部类 类似于嵌套类,局部类是定义在函数内部类,局部类定义只在定义它作用域中可见 局部类特点是其所有成员都必须在类完成定义...局部类还可以嵌套类,但是嵌套类可以定义在局部类外部,但是必须定义在与局部类相同作用域部类嵌套类本质也属于一个局部类,所以嵌套类自身成员必须定义在嵌套类内部 19.8 固有的不可移植特性

    84940

    【C++】类和对象(下篇)

    所以要将 operator<< 重载成全局函数。但又会导致类外没办法访问成员,此时就需要友元来解决。...最后对友元进行总结,友元提供了一种突破封装方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以友元不宜多用。 五、内部类 概念: 如果一个类定义在另一个类内部,这个内部类就叫做内部类。...内部类是一个独立类,它不属于外部类,更不能通过外部类对象去访问内部类成员。外部类对内部类没有任何优越访问权限。...注意: 内部类就是外部类友元类,参见友元类定义,内部类可以通过外部类对象参数来访问外部类所有成员。但是外部类不是内部类友元。...,B类可以访问A类成员变量,A类却不能访问B类成员变量;其实他们是两个独立类;内部类默认就是外部类友元类 如果计算上面代码中A类大小,会是多少呢?

    10810

    运算符重载(超详细)

    运算符函数定义与其他函数定义类似,惟一区别是运算符函数函数名是由关键字operator和其后要重载运算符符号构成。...:"以外,C++中所有运算符都可以重载。 (2) 重载运算符限制在C++语言中已有的运算符范围允许重载运算符之中,不能创建新运算符。...(5) 运算符重载不能改变该运算符用于内部类型对象含义。它只能和用户自定义类型对象一起使用,或者用于用户自定义类型对象和内部类对象混合使用时。...2) 友元函数运算符  运算符重载为类友元函数一般格式为: friend operator () { } 当运算符重载为类友元函数时,由于没有隐含...如果左边操作数必须是一个不同类对象,或者是一个内部类对象,该运算符函数必须作为一个友元函数来实现。 (7) 当需要重载运算符具有可交换性时,选择重载为友元函数。

    87520

    【C++】类和对象---友元,内部类,匿名对象详解

    ⚡友元函数 先看一个问题: 现在尝试去重载operator<<,然后发现没办法将operator<<重载成成员函数。因为cout 输出流对象和隐含this指针在抢占第一个参数位置。...所以要将operator<<重载成 全局函数。但又会导致类外没办法访问成员,此时就需要友元来解决。operator>>同理。...: 这是重载成全局函数写法: 友元函数可以直接访问类私有成员,它是定义在类外部普通函数,不属于任何类,但需要在类内部声明,声明时需要加friend关键字。...内部类是一个独立类, 它不属于外部类,更不能通过外部类对象去访问内部类成员。外部类对内部类没有任何优越 访问权限。...注意:内部类就是外部类友元类,参见友元类定义,内部类可以通过外部类对象参数来访 问外部类所有成员。但是外部类不是内部类友元。

    24510

    运算符重载

    运算符函数定义与其他函数定义类似,惟一区别是运算符函数函数名是由关键字operator和其后要重载运算符符号构成。...:"以外,C++中所有运算符都可以重载。(2) 重载运算符限制在C++语言中已有的运算符范围允许重载运算符之中,不能创建新运算符。...(5) 运算符重载不能改变该运算符用于内部类型对象含义。它只能和用户自定义类型对象一起使用,或者用于用户自定义类型对象和内部类对象混合使用时。...成员函数运算符  运算符重载为类成员函数一般格式为: operator () { }   当运算符重载为类成员函数时...友元函数运算符  运算符重载为类友元函数一般格式为: friend operator () { }   当运算符重载为类友元函数时

    1.1K70

    与C++类和对象宿命(下)

    1.取地址运算符重载 cout << &d1 << endl; cout << &d3 << endl; /* 自定义类型想要用运算符都要重载运算符 默认运算符就是++ -- 我们自己将对应运算符重载函数写好了...< d || *this == d;//我们这里基础是我们先将小于和等于操作符重载函数写出来 } bool Date::operator>=(const Date& d)const//小于取反...(*this == d); } /* 这些操作符重载是有关系 我们将小于和等于写出来就能进行剩下操作符重载代码书写了 */ //d1+100天 Date& Date::operator+=(int...*/ } //这个前提是有+=操作符重载函数 Date Date::operator+(int day)const//我们不能改变原先对象,就是this指针指向对象 { Date tmp...tmp就会别销毁了 所以我们用传值返回操作,不能用引用返回 // 在+存在情况下实现+=操作符重载 //Date& Date::operator+=(int day) //{ // *this =

    19810

    【C++】————类和对象(下)

    ,我们回想一下,是不是忽略了一个叫this指针东西,没错,我们这里去调这个函数时候,会有一个隐藏this指针,所以我们应该这样去写这个函数: // ==运算符重载 bool operator==(..._day; } 这样写才符合要求 调用时是这样调用; int ret=d1==d2; int ret=d1.operator==(d2); 1.3赋值运算符重载 赋值运算符重载就是用来为对象赋值: Date...return operator>(d) || operator==(d); } // <运算符重载 bool operator<(const Date& d) { if (_year < d....静态全局变量:限制了该变量作用域仅在当前文件可见,避免了命名冲突。...B就可以访问A中私有成员,但是A不可以访问B私有, 也就是A把B当成朋友了,但是不能说明B把A当成朋友 七、内部类部类其实就是在一个类中再去定义一个类: 内部类,内部类是外部类私有 在一个类中

    8810
    领券