我正在尝试访问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;
}
};
答案 0 :(得分:8)
this
是指向对象而不是对象本身的指针。如果要调用成员函数,可以直接调用该函数
float val(){
return operator[](3);
}
或者您可以取消引用this
并在实际对象上调用[]
。
float val(){
return (*this)[3];
}
由于this
是转换为return this[3];
的指针return (this + 3);
,这意味着向我提供this + sizeof(st)*3
的地址,该地址是this
以来的无效对象不是数组。这是UB并且还会导致编译器错误,因为this[3]
的类型是st
,并且您的函数应该返回float
。