我对我需要使用的语法感到困惑。
我有:
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
,编译器会说使用*
取消引用它。我该怎么做?
答案 0 :(得分:2)
尝试完全按照编译器的建议:
thing.bar(*this);
通过取消引用指针,您可以创建"参考。
答案 1 :(得分:1)
this
是当前对象的指针。你需要" dereference"它得到了对象的参考:
thing.bar(*this);
答案 2 :(得分:1)
您可以使用*
运算符取消引用,例如*this
。解除引用返回指向的对象,因为this
是指向当前实例的指针*this
将返回当前实例的对象。
但是,请注意,如果您保存此引用并且该实例超出范围,它将被销毁,并且您将留下一个悬空引用,这将在尝试读取时导致未定义的行为。