Đây chắc là code gốc của bài này:
class ToyBox {
private:
Toy *toyBox[5];
int numberOfItems;
...
Và bạn có dòng này:
*this->toyBox = NULL;
Và các dòng này:
toyBox[numberOfItems]->price = carToy.price;
toyBox[numberOfItems]->price = puzzleToy.price;
Mình thấy bạn nên học lại kiến thức về con trỏ. 
Đề cho toyBox là một mảng chứa con trỏ kiểu Toy.
Vì vậy dòng *this->toyBox = NULL hiểu thành this->toyBox[0] = NULL. :v :V
Không cần thiết vì có biến numberOfItems rồi, nếu bạn muốn gán bằng NULL thì hãy gán cho cả mảng, chứ đừng chỉ gán cho phần tử đầu như v. :v
Vì toyBox là mảng các con trỏ nên toyBox[i] là một con trỏ, và nó chưa được cấp phát và trỏ đi bất cứ đâu nên bạn truy cập và gán vào this->toyBox[numberOfItems]->price là UB.
Mà bạn chưa hiểu đa hình là gì rồi. :v :V
Đa hình mà đẻ ra mà lại phải gán giá tiền cho từng sản phẩm như kia thì sinh ra làm gì. 
Có thể sửa kiểu bẩn bẩn như này:
toyBox[numberOfItems] = &carToy;
Còn đúng thì bạn phải cấp phát một Toy mới như này:
toyBox[numberOfItems] = new CarToy(carToy.price, carToy.color);
Ngoài ra thì dùng C++ người ta xài nullptr chứ không thèm xài NULL. 