あるクラスのポインタを受け取るような関数があった場合、そのクラスのオブジェクトをauto_ptrを使って作成した場合にはそのままでは渡すことができない。
class Test; void Func(Test* p); int main() { auto_ptr<Test> pObj(new Test()); Func(pObj); // エラー。コンパイルできない }
auto_ptrが所持しているオブジェクトを得るにはget()を用いればよい。
Func(pObj.get());
オブジェクトが持つメンバ関数やメンバにアクセスするときはget()を介さなくても->演算子や*演算子でアクセスできる。
#include <iostream> #include <memory> using namespace std; class Test { public: void Func() {} }; int main() { auto_ptr<Test> pObj(new Test()); pObj.get()->Func(); // このようにしなくても pObj->Func(); // このようにオブジェクトのメンバ関数を呼べる (*pObj).Func(); }