[英]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.