2011-12-27 10 views
-1

メンバ関数では、呼び出し元のデータ型にアクセス:他の言葉で私はこのコードのような何かをしたい

myType a; 
a->foo(); 

void foo() 
{ 
    cout << a->bar(); 
} 
void bar() 
{ 
    cout << a->bar2(); 
} 
void bar2() 
{ 
    cout << a->bar3(); 
} 

、メンバ関数が呼び出されると、我々は、元の発信者を使用することができますか?

+2

私にはあなたが実際に尋ねていることは明らかではありません - クラスmyTypeのメソッドであると思われますか?しかし、あなたは「元の呼び出し元」(変数 'a')と呼ばれるものを参照するのに' this'を使うことができます。 – codeling

+0

コード例を明確にしてください。それはコンパイルされず、あなたが実際にやりたいことを明確に述べていません。 – Alex

+1

あなたがしようとしていることをより良く説明してください。 「バー」が定義されている場所を教えてください。 –

答えて

2

あなたが欲しい:

cout << this->bar(); 

あるいは、もっと単純に

cout << bar(); 

This IBM C++ documentationはかなりよくそれを説明しています。見てみましょう。

#include <iostream> 

class myType { 
    void foo() 
    { 
     std::cout << bar(); 
    } 
    void bar() 
    { 
     std::cout << bar2(); 
    } 
    void bar2() 
    { 
     std::cout << bar3(); 
    } 
}; 

...と、例えば中:あなたはおそらくやろうとしているが、このようなものは何

+0

'bar()'は 'myType'の*メソッド*と' foo() 'です。 barのように見えるコードを見ると、myTypeのメンバ*変数* ... – codeling

+0

これは複数のレベル呼び出しに有効ですか? – mahmood

+0

@mahmood:あなたはどんなレベルを指していますか?再帰レベル? – codeling

2

主な方法:クラス内

int main(int argc, char** argv) 
{ 
    myType a; 
    a->foo(); 
} 

、あなただけの彼らの名前で同じクラスのメソッドを参照することができ、そして、彼らは、元のメソッドと同じオブジェクトで呼び出されます!同じオブジェクトのメソッドを参照していることを強調したい場合は、例を使用してください。 bar()の代わりにthis->bar();クラスメンバを隠す他の名前(メソッドパラメータなど)がある場合はが必要ですが、を常に使用することができます。