Const again

Jason House jason.james.house at gmail.com
Sun Jan 27 07:17:03 PST 2008


naryl wrote:

> Is there a way to make something like this work in D 2.0?
> 
> clone is supposed to make a new shallow copy of it's object:
> 
>   interface Cloneable
>   {
>       const Cloneable clone();
>   }
> 
>   class Demo : Cloneable
>   {
>       public :
>           this(){}
> 
>           this( Demo reference )
>           {
>               reference_ = reference;
>           }
> 
>           override const Demo clone() {
>               return new Demo( reference_ );
>           }
>       private:
>           Demo reference_;
>   }
> 
>   void main()
>   {
>       auto a = new Demo(new Demo);
>       auto b = a.clone();
>   }
> 
> The method clone must be const and there must be a non-const constructor
> in Demo.

It looks like you should change this( Demo reference ) to this( const Demo
reference ).  Is that what you were saying is not allowed?  If so, can you
explain what's going wrong and why you can't?


More information about the Digitalmars-d-learn mailing list