frepple::utils::NonCopyable Class Reference

Class NonCopyable is a base class.
Derive your own class from it when you want to prohibit copy construction and copy assignment. More...

#include <utils.h>

Inheritance diagram for frepple::utils::NonCopyable:
frepple::Calendar::Bucket frepple::OperationPlan frepple::Problem frepple::utils::Functor frepple::utils::HasName< T > frepple::utils::Keyword frepple::utils::MetaClass frepple::utils::Mutex frepple::utils::PythonExtension< T > frepple::utils::PythonType frepple::utils::ScopeMutexLock frepple::utils::TimeLine< type >::Event frepple::utils::Tree frepple::utils::XMLInput frepple::utils::HasName< Buffer > frepple::utils::HasName< Calendar > frepple::utils::HasName< Customer > frepple::utils::HasName< Demand > frepple::utils::HasName< Item > frepple::utils::HasName< Location > frepple::utils::HasName< Operation > frepple::utils::HasName< Resource > frepple::utils::HasName< Solver > frepple::utils::PythonExtension< FreppleCategory< ME, PROXY > > frepple::utils::PythonExtension< FreppleCategory< PythonBuffer, Buffer > > frepple::utils::PythonExtension< FreppleCategory< PythonCalendar, Calendar > > frepple::utils::PythonExtension< FreppleCategory< PythonCustomer, Customer > > frepple::utils::PythonExtension< FreppleCategory< PythonDemand, Demand > > frepple::utils::PythonExtension< FreppleCategory< PythonItem, Item > > frepple::utils::PythonExtension< FreppleCategory< PythonLocation, Location > > frepple::utils::PythonExtension< FreppleCategory< PythonOperation, Operation > > frepple::utils::PythonExtension< FreppleCategory< PythonResource, Resource > > frepple::utils::PythonExtension< FreppleCategory< PythonSolver, Solver > > frepple::utils::PythonExtension< FreppleClass< ME, BASE, PROXY > > frepple::utils::PythonExtension< FreppleClass< PythonBufferDefault, PythonBuffer, BufferDefault > > frepple::utils::PythonExtension< FreppleClass< PythonBufferInfinite, PythonBuffer, BufferInfinite > > frepple::utils::PythonExtension< FreppleClass< PythonBufferProcure, PythonBuffer, BufferProcure > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarBool, PythonCalendar, CalendarBool > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarDouble, PythonCalendar, CalendarDouble > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarInt, PythonCalendar, CalendarInt > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarOperation, PythonCalendar, CalendarOperation > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarString, PythonCalendar, CalendarString > > frepple::utils::PythonExtension< FreppleClass< PythonCalendarVoid, PythonCalendar, CalendarVoid > > frepple::utils::PythonExtension< FreppleClass< PythonCustomerDefault, PythonCustomer, CustomerDefault > > frepple::utils::PythonExtension< FreppleClass< PythonDemandDefault, PythonDemand, DemandDefault > > frepple::utils::PythonExtension< FreppleClass< PythonForecast, PythonDemand, Forecast > > frepple::utils::PythonExtension< FreppleClass< PythonForecastBucket, PythonDemand, ForecastBucket > > frepple::utils::PythonExtension< FreppleClass< PythonForecastSolver, PythonSolver, ForecastSolver > > frepple::utils::PythonExtension< FreppleClass< PythonItemDefault, PythonItem, ItemDefault > > frepple::utils::PythonExtension< FreppleClass< PythonLocationDefault, PythonLocation, LocationDefault > > frepple::utils::PythonExtension< FreppleClass< PythonLPSolver, PythonSolver, LPSolver > > frepple::utils::PythonExtension< FreppleClass< PythonOperationAlternate, PythonOperation, OperationAlternate > > frepple::utils::PythonExtension< FreppleClass< PythonOperationFixedTime, PythonOperation, OperationFixedTime > > frepple::utils::PythonExtension< FreppleClass< PythonOperationRouting, PythonOperation, OperationRouting > > frepple::utils::PythonExtension< FreppleClass< PythonOperationTimePer, PythonOperation, OperationTimePer > > frepple::utils::PythonExtension< FreppleClass< PythonResourceDefault, PythonResource, ResourceDefault > > frepple::utils::PythonExtension< FreppleClass< PythonResourceInfinite, PythonResource, ResourceInfinite > > frepple::utils::PythonExtension< FreppleClass< PythonSolverMRP, PythonSolver, SolverMRP > > frepple::utils::PythonExtension< ME > frepple::utils::PythonExtension< PythonBufferIterator > frepple::utils::PythonExtension< PythonCalendarBucket > frepple::utils::PythonExtension< PythonCalendarBucketIterator > frepple::utils::PythonExtension< PythonCalendarIterator > frepple::utils::PythonExtension< PythonCustomerIterator > frepple::utils::PythonExtension< PythonDemandIterator > frepple::utils::PythonExtension< PythonDemandPlanIterator > frepple::utils::PythonExtension< PythonFlow > frepple::utils::PythonExtension< PythonFlowIterator > frepple::utils::PythonExtension< PythonFlowPlan > frepple::utils::PythonExtension< PythonFlowPlanIterator > frepple::utils::PythonExtension< PythonItemIterator > frepple::utils::PythonExtension< PythonLoad > frepple::utils::PythonExtension< PythonLoadIterator > frepple::utils::PythonExtension< PythonLoadPlan > frepple::utils::PythonExtension< PythonLoadPlanIterator > frepple::utils::PythonExtension< PythonLocationIterator > frepple::utils::PythonExtension< PythonOperationIterator > frepple::utils::PythonExtension< PythonOperationPlan > frepple::utils::PythonExtension< PythonOperationPlanIterator > frepple::utils::PythonExtension< PythonPeggingIterator > frepple::utils::PythonExtension< PythonPlan > frepple::utils::PythonExtension< PythonProblem > frepple::utils::PythonExtension< PythonProblemIterator > frepple::utils::PythonExtension< PythonResourceIterator > frepple::utils::PythonExtension< PythonSolverIterator >

List of all members.

Protected Member Functions

 NonCopyable ()
 ~NonCopyable ()

Detailed Description

Class NonCopyable is a base class.
Derive your own class from it when you want to prohibit copy construction and copy assignment.

Some objects, particularly those which hold complex resources like files or network connections, have no sensible copy semantics. Sometimes there are possible copy semantics, but these would be of very limited usefulness and be very difficult to implement correctly. Sometimes you're implementing a class that doesn't need to be copied just yet and you don't want to take the time to write the appropriate functions. Deriving from noncopyable will prevent the otherwise implicitly-generated functions (which don't have the proper semantics) from becoming a trap for other programmers.
The traditional way to deal with these is to declare a private copy constructor and copy assignment, and then document why this is done. But deriving from NonCopyable is simpler and clearer, and doesn't require additional documentation.

Definition at line 565 of file utils.h.


Constructor & Destructor Documentation

frepple::utils::NonCopyable::NonCopyable (  )  [inline, protected]

Definition at line 568 of file utils.h.

frepple::utils::NonCopyable::~NonCopyable (  )  [inline, protected]

Definition at line 569 of file utils.h.


The documentation for this class was generated from the following file:

Generated on 25 Feb 2010 for frePPLe by  doxygen 1.6.1