3

我有 B 类和 A 类。在 B 类的方法中(让它命名为 foo())我定义了 A 类的本地对象。在 AI 类中有采用 B 对象的方法。当 A 对象在 B 类的方法中是本地的时,如何将 B 对象传递给 A 类的这个方法。?

class B {
public:
  void foo()
  {
     A a;
     a.bar(???); // want to pass B object?
  }
};

class A {
public:
  void bar(B& b)
  {
     ...
  }
};
4

2 回答 2

5

如果要传递的当前实例B

a.bar(*this);

如果你想要一个不同的实例:

B b;
a.bar(b);

如果你想传递一个临时的,你需要修改A::foo为:

void bar(const B& b)

然后直接通过它:

a.bar(B());
于 2012-09-27T12:45:30.330 回答
4

指针是您所this需要的,它指向调用成员函数的实例。

a.foo(*this); // dereference since 'this' is a pointer
于 2012-09-27T12:45:19.573 回答