Whether or not C++ solves some of C's problems depends on use case. I found that Linus is right to an effect: for the purposes of the Linux kernel, C++ solves all the wrong problems (or problems that C doesn't have with respect to the kernel needs and use cases ... of course, as defined by Linus, which could be unfair as an evaluation by definition because other people's points tend to just not make it across)

On the other hand, when I touched C++ I found that it did solve some of the problems my uses cases had. It could be that they are the wrong (unnecessary) problems to solve in other circumstances.