Change the order of declaration:
Code:
class Expression {
public:
Expression() { }
virtual ~Expression() { }
};
class bbb : public Expression{
public:
bbb(){ }
};
class aaa : public Expression{
public:
aaa(bbb *x,Expression *y){ }
private:
bbb *lh;
Expression *rh;
};
Or add a forward declaration:
Code:
class Expression {
public:
Expression() { }
virtual ~Expression() { }
};
class bbb;
class aaa : public Expression{
public:
aaa(bbb *x,Expression *y){ }
private:
bbb *lh;
Expression *rh;
};
class bbb : public Expression{
public:
bbb(){ }
};
Either solution allows the compiler to know what bbb is when it is compiling aaa.