首页 > 解决方案 > 是否可以在不引用“this”指针的情况下使用成员运算符?

问题描述

我想重载[] operator并在成员函数中使用它而不引用this指针,因为重载的点,至少在这种情况下,是简洁的。我不认为它可以做到,可以吗?this我可以在不取消引用的情况下访问成员函数,但不能访问成员运算符,这似乎不一致。

#include <iostream>

struct demo {
  int i;

  void operator [](demo d) {
    std::cout << "operator called [" << d.i << "]" << std::endl;
  }

  void run() {

    demo k = { 5 };

    (*this)[k] ;          // works
    this->operator[](k);  // works
    // [k]                // fails - why?    
  }

};

标签: c++

解决方案


你可以使用它而不this喜欢

operator[](k);

推荐阅读