我正在尝试访问struct本身内的运算符,这可能吗?
struct st{
float vd;
float val(){
return this[3]; //this dont work, is there a some way?
}
float operator[](size_t idx){
return vd*idx;
}
};
解决方法:
这是指向对象而不是对象本身的指针.如果要调用成员函数,可以直接调用该函数
float val(){
return operator[](3);
}
或者你可以取消引用它并在实际对象上调用[].
float val(){
return (*this)[3];
}
因为这是一个指针返回这个[3];翻译为返回(这3);这意味着给我一个驻留此sizeof(st)* 3的地址的对象,这是一个无效的对象,因为这不是一个数组.这是UB并且还会导致编译器错误,因为[3]的类型是st,并且您的函数应该返回float.
标签:c,operators,struct 来源: https://codeday.me/bug/20190724/1525627.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。