2012-04-16 15 views
109

プロトタイプがvoid foo(Object &)の関数にポインタ(Object *ob)を渡すにはどうすればよいですか?あなたの質問のタイトルで提案されているように、ここで起こって何の鋳造がないことC++でポインタを参照へキャスト/変換する方法

foo(*ob); 

注:

+0

をオブジェクトへのが、質問は、ポインタで始まります参照が必要です。それはどちらの方向ですか? – MSalters

+0

@MSalters * convert *にする必要があります。私はそれを編集しています。しかし、私は何か解決策を探していたので、私はキャスト* – Dewsworld

答えて

147

はこのようにそれを呼び出します。すべての作業は、オブジェクトへのポインタを参照解除してから関数に渡します。ポインタをキャストするための

+18

@Ricobobそれは非常に頻繁に起こることだと言いました。容易に理解できる簡単な質問への答えは、しばしば多くの票を集める。厄介な質問に対する長くて複雑な答えは、有権者がメリットを容易に判断できないため、多くのアップフォースを得ることはよくありません。 repに関しては、rep capのために何も得られませんでした。 ;-)しかし、私は心から同意します。私は複雑な答えがより多くの担当者を得たことを望む。 –

+0

@DavidHeffernanはい、これは問題だと思われます。誰かがそれをすでに持ち上げていなければ、MetaSOに取るべき問題があると思います。 – Ricibob

+0

@ricobob私はそれがすでに起こっていると思います。 –

31
foo(*ob); 

+0

多くのものを追加していると推測するのは通常、良い答えの形式ではありませんここに(この場合は正しいが)、それはおそらくあなたが1つのdownvoteを持っている理由です。 – KillianDS

+5

bhhaaa、私は少なくとも私は30文字を書くようにしたので、 "私は推測"を追加しました。それはまた私が "..........."を追加する方法です –

+10

@RoeeGavirel私はあなたの最初の有権者です。私はdownvoteが厳しいと感じたからです。 FWIWでは30文字の制限を超えることができますが、私がやったHTMLコメント<!----------------------------->答えの私の最初のバージョン!あなたの答えに私の編集方法を示しています。 –

0

全例では、タイトルが "[原文]ポインタへの参照をキャスト" と言う

Online demo

class myClass 
{ 
    public: 
    void sayHello() 
    { 
    cout << "Hello"; 
    } 
}; 

int main() 
{ 
    myClass* myPointer; 
    myClass myObject = myClass(* myPointer); // Cast pointer to object 
    myObject.sayHello(); 

    return 0; 
} 
+0

ここには多くの問題があるので、私は驚いています。 まず、myPointerは初期化されていません。新しいmyClass()はどこですか? 第2に、 '//オブジェクトへのポインタをキャストする 'と書かれた行はそうして、コピーの束をします。逆参照されていない初期化されていないポインタから別のmyClassを作成し、それがmyClass myObjectに割り当てられたときに(コンパイラによって異なる) –

関連する問題