Goat takes two parameters. But horse only passes it one parameter. That causes a compile error.
Horse does not use y. What is the point of having a parameter that is not used? That is not an error as far as a C++ compiler is concerned, but it is almost certainly an error of thought.