Write Programs
If you don't have your own ideas, look for "code golf"'s here, for lists of interview programming questions, for quesitons from old programming competitions etc. Try to implement various known algorithms, and verify that they work correctly.
This trains your skills to put ideas into code. If you can't do it in your head, have a piece of paper and a pencil ready.
Read Programs
Read other people's programs and snippets, try to understand what the programs / routines are supposed to do, try to understand the algorithm they are following. If you are enjoy that kind of thing, you can also try to find flaws, which inputs would give undesirable results.
Also, consider why some pieces of code are hard to understand, and others are read easily.
Honestly, it's hard to give you good ressources for that. If you've implemented some standard algorithms, try to find reference implementations and try to understand why they do things differently.
Reading and understanding code - whether it's someone elses or your own rom last year - is one of the toughest exercises in coding, but you can learn a lot from it.
Learn new technology
Learn the OOP parts of C++, learn to use and to create templates. Sooner or later, you also need to find a decent UI framework to work with.
Learn new Concepts
Learn about OOP as an abstract concept, and compare to C++ how it implements that. Read about coding standards and general rules what code is good, what code is bad. I don't particluary like the google coding standards but they added rationales why they make somethign a standard. CS has no absolutes, no universal rules, only tools we hope to apply correctly in the right situation.
Do these four things in parallel, step by step. It takes 10 years to become a good programmer, start now :)