You can't forward declare Expression
because you need the full declaration for this:
Parameter() {
string = new Token();
identifier = new Token();
expr = new Expression(); // here!
}
What you can do is move the implementation of the Parameter()
constructor out of the header and into a .cpp
file.