Maybe it's because I've only been using C++ for about 2 years now (and probably because I've never really studied any other language as deeply as C++), but I really don't see what the big deal is with C++ it's just something you gotta learn. In my opinion you should start with C and evolve to C++ (atleast that's what I did and I haven't regretted it so far), after you have a good understanding of both start developing basic console games (like tic-tac-toe) and after your skills have grown try making simple 2D games (with programs like Game Editor or libraries like SDL) or if you're feeling really adventurous go straight to basic 3D games (again, with the help of programs and libraries); obviously you wont produce any commercial, mind-blowing games, but you will absorb a lot of knowledge about programming.
You've only used it for two years? That's really barely enough time to get to know the language. C++ is a huge and horrible beast of a language, with lots and lots and lots of lovely corner cases just waiting to bite you. That's not to say one can't start with it, but its a bad idea. You never have to learn C++ unless you decide to become a professional game developer. If you work indie, XNA, mobile phones, or similar, you can avoid C++ for almost the entire time. C is only slightly better than C++, having fewer of the more tricky corner cases, while still having plenty of lovely undefined behavior just waiting under the hood. I'm not trying to be mean, but even after 20 YEARS of using C++, I still find nasty corner cases that introduce fun. C++11 certainly didn't help in that regard.
Basically all I'm saying is to jump into the difficult stuff (cause your gonna have to learn it eventually), cry for a few days because you don't understand it (not literally),[/quote]
More like a few months, and even then you probably still won't understand the exact reasons why certain things are or are not valid.
There is a reason we recommend managed languages (like Java, C# and python) to beginners: Your goal, as a beginner, is to learn the art of programming. This is not something that is bound to a single language, it is a method of thinking, a set of paradigms, and the problem solving skills required to take a problem and produce a solution. As such, the language you choose to learn on your initial forays into the field should be one that encourages learning, provides results quickly, and does not require you to understand low level concepts before you can implement high level ideas. You will eventually learn lower level concepts, and you will eventually move on to other languages, many other languages. Each language has problems it is good at solving, and problems that it is terrible at solving. Eventually, when you have a tool chest of languages and paradigms you will find problem solving to not just be significantly simpler, but also significantly cleaner.