The error message makes it sound like you are using operator[] on something that has not defined that operator, but I'm a bit confused because I don't see it being used in the code that you have posted.
I have not defined the [] operator for BigInt but it is just a vector with BigInt template so I think I shouldn't have to define that.
The error only came after I replaced a function int to_int() in my BigInt class to a function operator int() so the initial code which worked was
When I tried your code (with a lashed together, pretend BigInt) I got a different error, but at the same place.
main.cpp(46) : error C2228: left of '.at' must have class/struct/union
(For some reason, your compiler seems to be treating vector::at() as if it's vector::operator[] ??)
But if I tweak the code to use a C-style cast (int)amnt rather than a C++ function style cast int(amnt), then the problem goes away.
vector <BigInt> Array((int)amnt);
So it looks like you fell foul of the most vexing parse problem; the compiler thought that by (line 3)
vector <BigInt> Array(int(amnt));
you were declaring a function called Array which returned a vector of BigInts and takes a single int parameter (the brackets round amnt were just ignored.)