38

C ++でポインタへの参照を「変換」する方法はありますか? 以下の例でfunc2は、すでにプロトタイプが定義されており、それを変更することはできませんがfunc、私の API であり、両方のパラメーターを渡すか、1 つ (および 2 つ目を NULL に設定) またはどちらも渡さない (両方を NULL に設定) ことを希望します。

void func2(some1 *p1, some2 *p2);

func(some1& obj, some2& obj2)
{
   func2(..);
}
4

5 に答える 5

41

func2(&obj, &obj2);

通常の変数のように参照パラメーターを使用します。

于 2013-09-26T15:33:01.593 に答える
14

オブジェクトのアドレスを取得するだけです。

some1 *p = &obj;

またはあなたの場合:

func2(&obj, &obj2);
于 2013-09-26T15:33:03.673 に答える
7

通常、次のように簡単に使用できます&

void func(some1& obj, some2& obj2)
{
    func2(&obj, &obj2);
}

ただしoperator&、オーバーロードされる可能性があるため、std::addressof(C++11 以降) これらの場合に使用する必要があります。

void func(some1& obj, some2& obj2)
{
    func2(std::addressof(obj), std::addressof(obj2));
}
于 2018-08-23T15:55:10.157 に答える
4
 func2(&obj, &obj2);

使用する必要があります。

于 2013-09-26T15:35:07.360 に答える