如何通过引用从被传递的对象中传递自我?

时间:2017-01-05 11:08:31

标签: c++ c++11

我对我需要使用的语法感到困惑。

我有:

class Foo {

public:

    void bar(Baz& grr){

    }

}

另一堂课:

class Baz{

}

并且:

class Jay : public Baz{
public:
   void doStuff(){
        Foo thing();
        thing.bar(); //Here is the problem ? How do I pass this instance to this function ?
   }
}

如何从Jay内将Foo::bar(Baz& grr)的实例传递给doStuff()?如果我尝试使用this,编译器会说使用*取消引用它。我该怎么做?

3 个答案:

答案 0 :(得分:2)

尝试完全按照编译器的建议:

thing.bar(*this);

通过取消引用指针,您可以创建"参考。

答案 1 :(得分:1)

this是当前对象的指针。你需要" dereference"它得到了对象的参考:

thing.bar(*this);

答案 2 :(得分:1)

您可以使用*运算符取消引用,例如*this。解除引用返回指向的对象,因为this是指向当前实例的指针*this将返回当前实例的对象。

但是,请注意,如果您保存此引用并且该实例超出范围,它将被销毁,并且您将留下一个悬空引用,这将在尝试读取时导致未定义的行为。