You should realise that although C++ was initially designed to enable OOP, it is very ill suited for that kind of programming (where I define OOP as the use of virtual functions, which imply dynamically allocated objects, etc...).
Modern C++ programming provides tools that are far better than traditional OOP for solving many programming problems.
If you are learning C++ I would recommend that you learn about RAII, and learn why it is that is is absolutely central to correct usage of the language. After that you should learn about templates, and how they can be used to create reusable components.
Read through and understand everything in Guru of the Week, and consider reading the associated books (Exceptional C++ and More Exceptional C++). Also consider reading some of the other books from The Definitive C++ Book Guide and List.
While you are doing this, have a look at the design and implementation of the libraries in boost. Many of them are examples of near perfect usage of the C++ language, and they have widespread usefulness.
Most importantly: write code.
It is often difficult to understand solutions to problems that you have never faced. It is crucial that you have a deep understanding of when particular techniques are appropriate, and what problems can be solved by which methodologies. Attempting to use methodologies, techniques, libraries or patterns that solve a fundamentally different problem from the one that you are up against will never result in good code.