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 に答える