diff --git a/include/rcp.h b/include/rcp.h index 0885d57..285a6b6 100644 --- a/include/rcp.h +++ b/include/rcp.h @@ -113,12 +113,14 @@ public: mutable std::atomic ref_count{0} #define rcp_managed(classname) \ - rcp get_rcp() \ - { \ - return rcp(this); \ - } \ - template \ - static rcp create(Args&&... args) \ - { \ - return (new classname(std::forward(args)...))->get_rcp(); \ - } + public: \ + rcp get_rcp() \ + { \ + return rcp(this); \ + } \ + template \ + static rcp create(Args&&... args) \ + { \ + return (new classname(std::forward(args)...))->get_rcp(); \ + } \ + private: diff --git a/test/tests.cpp b/test/tests.cpp index 59ad9fb..4d4be44 100644 --- a/test/tests.cpp +++ b/test/tests.cpp @@ -9,6 +9,7 @@ static int myderived_destruct; class MyBase { rcp_root(); + rcp_managed(MyBase); protected: MyBase(int x, int y) @@ -20,13 +21,12 @@ protected: { mybase_destruct++; } - -public: - rcp_managed(MyBase); }; class MyDerived : public MyBase { + rcp_managed(MyDerived); + protected: MyDerived(double v) : MyBase(1, 2) { @@ -37,9 +37,6 @@ protected: { myderived_destruct++; } - -public: - rcp_managed(MyDerived) }; void t1()