mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-27 17:28:41 +00:00
Add DISABLE_CLASS_COPY macro (and use it)
Use this macro to disallow copying of an object using the assignment operator or copy constructor. This catches otherwise silent-but-deadly mistakes such as "ServerMap map = env->getMap();" at compile time. If so desired, it is still possible to copy a class, but it now requires an explicit call to memcpy or std::copy.
This commit is contained in:
parent
ca8e56c15a
commit
c56d7fe0eb
11 changed files with 30 additions and 0 deletions
|
@ -30,4 +30,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
#define CONTAINS(c, v) (std::find((c).begin(), (c).end(), (v)) != (c).end())
|
||||
|
||||
// To disable copy constructors and assignment operations for some class
|
||||
// 'Foobar', add the macro DISABLE_CLASS_COPY(Foobar) as a private member.
|
||||
// Note this also disables copying for any classes derived from 'Foobar' as well
|
||||
// as classes having a 'Foobar' member.
|
||||
#define DISABLE_CLASS_COPY(C) \
|
||||
C(const C &); \
|
||||
C &operator=(const C &)
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue