带有数组下标运算符 ([]) 的结构取消引用运算符 (->) 的语法

Syntax for structure dereference operator (->) with array subscript operator ([])

本文关键字:运算符 引用 gt 语法 取消 结构 数组 下标      更新时间:2023-10-16

假设我有这样的组合:

class Dataset
{
  std::unique_ptr<Properties> properties;
  std::unique_ptr<Properties> & getProperties() { return properties; }
  Dataset & getDataset() { return *this }
  ....
}
class Properties
{
  Property & operator[](const std::string & s);
  ...
}

如何调用运算符[]?为什么下面是语法错误?

getDataset().getProperties()->["Key"]//语法错误

getDataset().getProperties()->operator[]("Key");

(*getDataset().getProperties())["Key"];

至少有两种方法

( *getDataset().getProperties() )["Key"]
getDataset().getProperties()->operator []( "Key" )

我宁愿:

(*getDataset().getProperties())["Key"];