The knight can move 2 squares across and 1 square up or down and vice versa. The positions on the chess board are represented using algebraic notation. There are a number of ways to solve this problem, but I chose a simple uniform cost search - which is like a bredth first search with each move on the chess board being having an equal cost, so the shortest path will always have the least number of moves.
Because this challenge was to demonstrate my knowledge of C++, of course my solution is object oriented and completely over engineered. Anyway, you can find my solution here: The Knights Travail.
It's hosted on ideone.com so you can even execute it and put your own travails in. Just type them in to the input box down the bottom, eg: A1 B2