带有数组下标运算符 ([]) 的结构取消引用运算符 (->) 的语法
Syntax for structure dereference operator (->) with array subscript operator ([])
假设我有这样的组合:
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"];
相关文章:
- 取消引用运算符不能重载
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 标准库类型的赋值运算符的引用限定符
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 移动赋值运算符;尝试引用已删除的函数.我该如何解决这个问题?
- 为什么我的运算符 + 重载尽管是通过引用传递的,但仍调用我的复制构造函数?
- C++编程:运算符重载中的引用如何工作?
- 重载运算符*以获取对另一个类的实例的引用
- 使用 scope 运算符 (::) 引用另一个文件中的类
- 对运算符=使用通用引用,而不是多个重载
- 如何重载下标运算符 [] 以引用 2d STL 数组?
- 未定义的引用和运算符 << vs me
- 为什么我不能在运算符=中使用引用类型?
- C++:对函子重载调用运算符的未定义引用
- 运算符重载C++类中的引用返回
- 如何在C++中使用 new 运算符创建对动态创建的数组的引用?
- 对模板运算符的未定义引用,其定义位于同一头文件中
- 为什么在通过引用返回运算符分配时取消引用'this'指针?
- 如果可能的话,C++总是更喜欢右值引用转换运算符而不是常量左值引用吗?
- 运算符++:引用与值返回和未使用的参数