Compare commits
3 Commits
eaad6ba6e0
...
9dfb6e4740
| Author | SHA1 | Date | |
|---|---|---|---|
| 9dfb6e4740 | |||
| 53b2247432 | |||
| 83ca3d8893 |
@ -96,7 +96,7 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#define rcp_root() \
|
#define rcp_managed_root(classname) \
|
||||||
public: \
|
public: \
|
||||||
void rcp_inc() const \
|
void rcp_inc() const \
|
||||||
{ \
|
{ \
|
||||||
@ -110,15 +110,18 @@ public:
|
|||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
private: \
|
private: \
|
||||||
mutable std::atomic<int> ref_count{0}
|
mutable std::atomic<int> ref_count{0}; \
|
||||||
|
rcp_managed(classname)
|
||||||
|
|
||||||
#define rcp_managed(classname) \
|
#define rcp_managed(classname) \
|
||||||
rcp<classname> get_rcp() \
|
public: \
|
||||||
{ \
|
rcp<classname> get_rcp() \
|
||||||
return rcp<classname>(this); \
|
{ \
|
||||||
} \
|
return rcp<classname>(this); \
|
||||||
template <typename... Args> \
|
} \
|
||||||
static rcp<classname> create(Args&&... args) \
|
template <typename... Args> \
|
||||||
{ \
|
static rcp<classname> create(Args&&... args) \
|
||||||
return (new classname(std::forward<Args>(args)...))->get_rcp(); \
|
{ \
|
||||||
}
|
return (new classname(std::forward<Args>(args)...))->get_rcp(); \
|
||||||
|
} \
|
||||||
|
private:
|
||||||
|
|||||||
@ -8,7 +8,7 @@ static int myderived_destruct;
|
|||||||
|
|
||||||
class MyBase
|
class MyBase
|
||||||
{
|
{
|
||||||
rcp_root();
|
rcp_managed_root(MyBase);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MyBase(int x, int y)
|
MyBase(int x, int y)
|
||||||
@ -20,13 +20,12 @@ protected:
|
|||||||
{
|
{
|
||||||
mybase_destruct++;
|
mybase_destruct++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
|
||||||
rcp_managed(MyBase);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class MyDerived : public MyBase
|
class MyDerived : public MyBase
|
||||||
{
|
{
|
||||||
|
rcp_managed(MyDerived);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
MyDerived(double v) : MyBase(1, 2)
|
MyDerived(double v) : MyBase(1, 2)
|
||||||
{
|
{
|
||||||
@ -37,9 +36,6 @@ protected:
|
|||||||
{
|
{
|
||||||
myderived_destruct++;
|
myderived_destruct++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
|
||||||
rcp_managed(MyDerived)
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void t1()
|
void t1()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user