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.
Code:
inBasket = inval;
// Actually calls Basket(int)
There is one particular case where assignment looks like this:
Code:
inBasket = Items(inval);
// The constructor is 'explicit' and must be called this way
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:
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.