2011-12-27 109 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();在有隐藏类成员的其他名称(例如方法参数)的情况下,只有必需,但它可以始终使用可以