class MyClass { public: // Owns |p|. void DoSomething(AnotherClass* p) { ... } WeakPtr<MyClass> AsWeakPtr() { return weak_factory_.GetWeakPtr(); } private: base::WeakPtrFactory<MyObject> weak_factory_;};