I realize that this is an open-ended question and I hope that it does not descend into a "flame war" because I really am interested in this.
Hypothesis: Many see C++ as a difficult language. Example, Cliff recently wrote (Multi-File C++ #21):
I've only been doing C++ for about 5 years now, give it another 5 and I may finally "get it"
I see a couple of top-level possibilities:
1. The complexity of the language, itself
2. Poor teaching about the language (Johan, excepted!)
3. Poor understanding of the language by those who try to use it.
My hunch is that all 3 play a role. If the language, itself, is the biggest part of it (items 2 & 3 would appear to be driven by item 1), what is it about the language?
1A - Many users come from C background, and some things have to be unlearned
1B - There is often more than one "right" way to accomplish a task (but that is true of C, also).
1C - There are techniques that seem superficially similar but are enough different to cause problems (pass-by-reference vs pointers comes to mind)
1D - The whole Class structure and the idea of "instances"
1E - Inheritance
1F - The idea that some things can be "private" and others "public"
1G - The fact that ALL of the above are together in a single language (but VisualBasic and XOJO have most of these attributes and are not generally considered "difficult")
I would like to hear from folks who ARE C++ users: what have been YOUR stumbling blocks to effective use of the language? And, folks who have tried and given up: what caused you to give up (beyond the generic "Its just too hard").
Lets keep it civil!