[Insight-developers] private constructor with argument Self

Miller, James V (Research) millerjv at crd.ge.com
Thu Mar 3 16:29:49 EST 2005


Here is my take...

Any ITK class derived from itk::Object that is NOT abstract needs 
to have foo(const Self &) and operator=(const Self &) declared 
but not defined.

Basically, any concrete class derived from itk::Object needs to have 
these methods declared.  This keeps the user from calling the copy
constructor and operator= AND keeps the compiler from generating a 
default implementation.

Abstract classes do not need them since they cannot be instantiated.
This is also why abstract classes do not need itkNewMacro() calls.

Jim



-----Original Message-----
From: insight-developers-bounces at itk.org
[mailto:insight-developers-bounces at itk.org]On Behalf Of Stephen R.
Aylward
Sent: Thursday, March 03, 2005 3:23 PM
To: Insight-developers (E-mail)
Subject: [Insight-developers] private constructor with argument Self



Hi,

Question: When do I implement a private contructor that takes a const 
reference to self as an argument?

e.g.,

Class foo
  {
  public:
    stuff...
  private:
    foo(const Self &);
    void operator=(const Self &);
  }

Sometimes these functions are implemented in itk classes....sometimes 
not.   I thought I knew the answer...but...I guess I am 
wrong...Specifically, in ITK it doesn't appear to depend on whether or 
not there are local vars in the class...   I couldn't find anything on 
our web pages or in the software guide...

Thanks,
Stephen
-- 
===========================================================
Dr. Stephen R. Aylward
Associate Professor of Radiology
Adjunct Associate Professor of Computer Science and Surgery
http://caddlab.rad.unc.edu
aylward at unc.edu
(919) 966-9695

_______________________________________________
Insight-developers mailing list
Insight-developers at itk.org
http://www.itk.org/mailman/listinfo/insight-developers


More information about the Insight-developers mailing list