[gecode-users] Starting with C++

Malcolm Ryan malcolmr at cse.unsw.edu.au
Wed Nov 19 05:06:27 CET 2008

Given that GecodeJ is no longer supported, I'm in the process of  
migrating my code to C++ (and learning C++ in the process).

It seems from my perusal of the examples that the C++ library works  
slightly differently. Whereas in java the copy constructors for spaces  
look like:

   public Queens(Boolean share, Queens queens) {
     super(share, queens);
     n = queens.n;
     q = new VarArray<IntVar>(this, share, queens.q);

in C++ they look like:

   /// Constructor for cloning \a s
   Queens(bool share, Queens& s) : Example(share,s) {
     q.update(this, share, s.q);

The Java code explicitly contructs a new var array from the old. The C+ 
+ code seems to implicitly construct an empty var array and then call  
'update' to copy the old into the new. Is that correct? Does every  
kind of variable have an no-arg constructor? What is the rationale for  
this choice? It seems that it allows you to construct variables in an  
incompletely initialised state. Is that deliberate?


More information about the gecode-users mailing list