私はこの方法を問題なく使用していますが、これが完全に許可されている方法なのか、それとも運が良かっただけなのかを確認したいと思います!
class A
{
public:
void bar()
{
foo(*this);
}
};
void foo(A &a)
{
}
ありがとうございました
私はこの方法を問題なく使用していますが、これが完全に許可されている方法なのか、それとも運が良かっただけなのかを確認したいと思います!
class A
{
public:
void bar()
{
foo(*this);
}
};
void foo(A &a)
{
}
ありがとうございました
はい、許可されています。*this
const メソッドからは、 const パラメーターを受け入れる関数にのみ渡すことができることに注意してください。
class B;
void foo(B&);
void bar(B const&);
class B {
void meow() const {
bar(*this); //OK
foo(*this); //ERROR
}
};
はい、完全に合法です。return *this;
これは、いくつかの演算子 (代入演算子など)を記述するときに行うことです。
これはまったく問題なく、「このオブジェクトについて他の関数またはオブジェクトに知らせたい」という一般的なパターンです。
渡されたものの有効期間を超えて参照が保存されていないことを確認してください。