7
// headers
class A
{
public:
std::shared_ptr<B> createB();
}
class B
{
private:
std::shared_ptr<A> a;
public:
B(std::shared_ptr<A>);
}
// source
std::shared_ptr<B> A::createB()
{
auto b = std::make_shared<B>(this); // Compiler error (VS11 Beta)
auto b = std::make_shared<B>(std::shared_ptr<A>(this)); // No compiler error, but doenst work
return b;
}
Ancak bu düzgün çalışmıyor, herhangi bir öneriyi bunu bir argüman olarak nasıl doğru bir şekilde iletebilirim?
teşekkürler! – RdR
'shared_from_this() 'işlevinin, mevcut nesnenin zaten bir" shared_ptr "içinde yönetilmesini gerektirdiğini unutmamak önemlidir. Yani int main() {A a; a.createB(); } 'un tanımsız davranışı; int main() {shared_ptr a (yeni A); a-> createB(); } doğrudur. –
@ DavidRodríguez-dribeas Kesinlikle. Cevabı buna göre güncelledim. Teşekkürler. –