c – 在struct本身内访问运算符

我正在尝试访问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.

上一篇:**是新的幂运算符,而不是php中的power()


下一篇:Javascript如何使用带括号的和/或运算符