以下の内容はhttps://toburau.hatenablog.jp/entry/20090805/1249496501より取得しました。


auto_ptrその2

あるクラスのポインタを受け取るような関数があった場合、そのクラスのオブジェクトを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();
}



以上の内容はhttps://toburau.hatenablog.jp/entry/20090805/1249496501より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14