簡體   English   中英

在C ++中將引用轉換為指針表示

[英]convert reference to pointer representation in C++

有沒有辦法在c ++中“轉換”對指針的引用? 在下面的例子中, func2已經定義了原型,我無法更改它,但func是我的API,我想要傳遞兩個參數,或者一個(和第二個設置為NULL)或兩者都沒有(都設置為NULL ):

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

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

func2(&obj, &obj2);

使用正常變量等參考參數。

只需獲取對象的地址即可。

some1 *p = &obj;

或者在你的情況下:

func2(&obj, &obj2);
 func2(&obj, &obj2);

是你應該使用的。

在正常情況下,您只需使用&

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));
}

對於干凈的設計,將所有內容放在一個類中(或使用名稱空間)

class X {
   private:
   void func2(someA*, someB*);

   public:
   func(someA& a, someB& b) { func2(&a, &b); }
   func(someA& a) { func2(&a, 0); }
   func() { func2(0, 0); }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM