[gecode-users] Gecode::IntVarBranch cannot be used as a function

Gerloff Hendrik h.gerloff at tu-braunschweig.de
Wed Apr 3 00:49:48 CEST 2013


Hi,

I tried to compile the example "Send More Money" from the pdf 
"Modeling and Programming with Gecode", page 14.

The compiler stops with following errors:
In constructor 'SendMoreMoney::SendMoreMoney()':
error: '(Gecode::IntVarBranch)10u' cannot be used as a function
error: '(Gecode::IntValBranch)0u' cannot be used as a function

The line causing the error is (you can find the complete code at the 
end of this mail):
branch(*this, l, INT_VAR_SIZE_MIN(), INT_VAL_MIN()); // defined in 
set.hh

As far as I know this kind of error occurs when you use a variable 
with the same name as the function, but there is no
variable with this name. Searching with google didn't show any useful 
results so I am asking here for help.

I'm using qtcreator on ubuntu 12.04.

Greets


Example from the book:

#include <gecode/int.hh>
#include <gecode/gist.hh>

using namespace Gecode;

class SendMoreMoney : public Space {
protected:
   IntVarArray l;
public:
   SendMoreMoney(void) : l(*this, 8, 0, 9) {
     IntVar s(l[0]), e(l[1]), n(l[2]), d(l[3]),
            m(l[4]), o(l[5]), r(l[6]), y(l[7]);
     rel(*this, s, IRT_NQ, 0);
     rel(*this, m, IRT_NQ, 0);
     distinct(*this, l);
     IntArgs c(4+4+5); IntVarArgs x(4+4+5);
     c[0]=1000; c[1]=100; c[2]=10; c[3]=1;
     x[0]=s;    x[1]=e;   x[2]=n;  x[3]=d;
     c[4]=1000; c[5]=100; c[6]=10; c[7]=1;
     x[4]=m;    x[5]=o;   x[6]=r;  x[7]=e;
     c[8]=-10000; c[9]=-1000; c[10]=-100; c[11]=-10; c[12]=-1;
     x[8]=m;      x[9]=o;     x[10]=n;    x[11]=e;   x[12]=y;
     linear(*this, c, x, IRT_EQ, 0);
     branch(*this, l, INT_VAR_SIZE_MIN(), INT_VAL_MIN());
   }
   SendMoreMoney(bool share, SendMoreMoney& s) : Space(share, s) {
     l.update(*this, share, s.l);
   }
   virtual Space* copy(bool share) {
     return new SendMoreMoney(share,*this);
   }
   void print(void) const {
     std::cout << l << std::endl;
   }
};

int main(int argc, char* argv[]) {
   SendMoreMoney* m = new SendMoreMoney;
   Gist::dfs(m);
   delete m;
   return 0;
}



More information about the users mailing list