2011-12-27 69 views
-1

我想要做這樣的事情代碼訪問呼叫者數據類型:在成員函數

myType a; 
a->foo(); 

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

在另一個字,當一個成員函數被調用,可我們用原來的調用者?

+2

對我來說,它並不清楚你真正要問的是 - foo應該是類myType的方法嗎?但是,你可以使用'this'來引用我認爲你所指的「原始調用者」(變量'a')。 – codeling 2011-12-27 10:27:41

+0

請說明您的代碼示例。它不會編譯,也不會清楚地說明你真的想要做什麼。 – Alex 2011-12-27 10:30:36

+1

請更好地解釋你正在嘗試做什麼。向我們展示「酒吧」的定義。 – 2011-12-27 10:30:41

回答

2

你想:

cout << this->bar(); 

,或者更簡單

cout << bar(); 

This IBM C++ documentation解釋了它相當不錯。看一看。

+0

假設'bar()'是'myType'的*方法*,以及'foo()';看看代碼它看起來更像bar是myType的成員變量* – codeling 2011-12-27 10:28:58

+0

這對多個級別調用有效嗎? – mahmood 2011-12-27 10:29:24

+0

@mahmood:你指的是什麼樣的水平?遞歸級別? – codeling 2011-12-27 10:29:56

2

什麼你可能想要做的是這樣的:

#include <iostream> 

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

...在如主要方法:

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

內一類,你可以參考只是他們的名字同一個類的方法,它們將被稱爲對同一對象的原始方法!如果您想突出顯示您指的是同一對象的方法,請使用this->bar()而不是bar();在有隱藏類成員的其他名稱(例如方法參數)的情況下,只有必需,但它可以始終使用可以