It's hard to set a goal like this before you've even started using the language much, because things will defintely come up as you progress that make the goal more difficult than you orginally expected. I would suggest you take it one step at a time, but if you do set a long term goal, I wouldn't make it "I will create XYZ program".
Why do I say that? Because if you concentrate your efforts on one program, you will probably overlook important parts of the language, its libraries, and the learning experience in general. Data structures, for example, is a rather boring topic, but it is essential to know at least a few flexible data structures when designing a program of any considerable size. If you bypass such topics for things that may seem more relevant to the program you're working on - like a graphics API for example - you'll probably create a program that works, but is poorly constructed.
I'm self taught in pretty much all I know about programming, and I did try to set goals to make specific programs, much like you're doing. I did make them, but when I look at them now, after learning more of computer science theory, they seem to be unorganized messes. Though I'd like to improve upon them, it is often easier to just start from scratch anyway.
I don't know how you're planning to learn C++, but as I learn programming, I've found it most effective to learn from books. In particular,
The C Programming Language by Ritchie and Kernighan, as well as
The Practice of Programming, by Kernighan and Pike, have offered numerous insights not only towards the syntactical issues of specific languages, but also the general stylistic elements of computer science. I've found the later to be much more important.
BTW, if you need a graphics API,
SDL is nice. It's simple to use (mostly), portable, free in every meaning of the word, and it works well.
Best of luck