C++ 带数组下标运算符([])的结构取消引用运算符(>;)的语法
假设我有这样的作文:C++ 带数组下标运算符([])的结构取消引用运算符(>;)的语法,c++,C++,假设我有这样的作文: class Dataset { std::unique_ptr<Properties> properties; std::unique_ptr<Properties> & getProperties() { return properties; } Dataset & getDataset() { return *this } .... } class Properties { Property & o
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);
...
}
类数据集
{
std::独特的ptr属性;
std::unique_ptr&getProperties(){return properties;}
Dataset&getDataset(){return*this}
....
}
类属性
{
属性和运算符[](const std::string&s);
...
}
如何呼叫接线员[]?为什么下面的代码是语法错误
getDataset().getProperties()->[“Key”]
//语法错误
getDataset().getProperties()->operator[]("Key");
或
我希望:
(*getDataset().getProperties())["Key"];
至少有两种方法
( *getDataset().getProperties() )["Key"]
getDataset().getProperties()->operator []( "Key" )
getDataset().getProperties()
是一个std::unique\u ptr
,因此在调用操作符[]
之前,必须执行另一个解引用操作。
( *getDataset().getProperties() )["Key"]
getDataset().getProperties()->operator []( "Key" )