C++ much like most programming languages is a method to making programming software easier. I use to question why people have a hard time with it after taking many many programming courses leading up to it. I found the language itself to be rather easy long before I took any courses in college. I found it to be very very very easy, but that was then, after taking my first C++ course I began to understand why people said its hard, not realizing what the real problem is. My first C++ course I took was a 8 week online course, I did pass it just fine, even with a conflict of interests with the instructor, forcing visual studio on me rather than letting me use the GNU C++ compiler, because what visual studio saw as bugs the GNU C++ compiler didn't and it resolved those issues because it wasn't a bastardized form of C++, it was more native.
I recently started taking more C++ courses, C++ 2 & C++ with directx. I already have my degree but I wanted to take these courses for a certificate more or less stating that I am skilled in C++. I found that these recent courses with 2 entirely different instructors, and 2 entirely different teaching methods to be the reason why people consider it hard.
I find instructors that try to hard to force to program the exact same way they want, in which what they want they don't describe usually that well, a majority of the students are failing, dropping out, and quitting their program all together because the instructor is too hard on them. They don't allow them to learn the language rather their practices in which they want to force on to others. Which are good practices yes, but if a student fails to follow those practices and make the program exactly the way you want without telling them what they want this is setting them up for failure, and to come to the conclusion that it is too hard for them rather than teaching them. This is one of the two instructors I have nows teaching methodology, there is no slack what so ever, 1 mistake can land you a failing grade even if it is a interpenetration problem. Luckily the instructor I have is very generous compared to others I have had and allows you to re-do if it is some big assignment.
The other teaching methodology is one that is more about getting the problem delt with rather than how exactly you do it. Leaving the problem solving up to the student, but again I find a problem with this methodology as it makes the courses way too easy, with very quick fast learning, which most people forget if they don't use making it more difficult for the students down the road in the real world, because they have this messy sort of practices that makes the code entirely unreadable. Along with that often I find students with more questions than answers to solutions, such as how does this exactly work like its some foreign language to them for the libraries and functions they use. You could show them it and they still wouldn't get it down. Students from these classes are learning more than they would about how to do things rather than how things work.
Both methodologies are pretty common I have had both methodologies before with various instructors within courses designed for many different fields. The problem with both is they have a greater fault in the out term of teaching, they both work to a degree, but they both have problems, in which brings me to question more how would these problems be solved to not detour people from programming, and put themselves down.
I find C++ really easy on its own, but the problem is trying to not only get others to feel the same way but to show them. I recommend if you are in these positions ever in the course of trying to take courses from a college to sit down collect your thoughts and consider that it might not be your fault, don't beat yourselfs up because that is only going to make the problem worse with trying to learn a language.