I've been working with a lot of C and Java lately so I'm a bit confused coming back to C++ on why this is not allowed.
incomplete type is not allowed
Expression power; // <--- incomplete type is not allowed
If you put an instance of a class inside itself, if you notice, you are creating recursion, since every instance has its own
Expression power, and this goes on forever. If you have a pointer though, you can control this infinite recursion, since at any time you can set
NULL/0, pre C++11), to end the recursion.