More or less, that is the idea: in inheritance hierarchies and with const members, initialization lists are required. Your actual problem is solved through assignment also, if you wish to avoid constructs you haven't learned.
There is one particular case where assignment looks like this:
inBasket = inval;
// Actually calls Basket(int)
Explicit constructors should be a class of constructors that always have one argument. By declaring a class constructor explicit you are saying that you can't call the constructor this way:
inBasket = Items(inval);
// The constructor is 'explicit' and must be called this way
As a more important aside, note that Syscal has changed the member of Basket to be a pointer. While in this case there is little difference it would perhaps have been more instructive to stick to one example.