2014-03-05 39 views
0

我有一个myClass,它使用operator []来访问一些数据。而这一类我们这样创建:在C++中使用operator []的最佳实践

shared_ptr<myClass> ptr (new MyClass); 

所以,当我想使用运营商[]我可以做这样的方式有两种:

ptr->operator[]("something"); // 1 
(*(ptr.get()))["something"]; // 2 

什么是最好的方式去?

回答

8

既不:

(*ptr)["something"]; 

ptr.get()是当你需要的指针值,operator->是用于访问成员,并且是operator*当你需要的参考。在这种情况下,参考是最方便的,因为在使用->时需要详细说明operator[]的名称。