I'm a little confused how we have a vector which appears to holds pointers to objects of Statement datatype. But Statement is a pure virtual function, and as I understand it we cannot instantiate objects from a pure virtual class. What am I missing?
From the header file of Statements.hpp
: (both Statement and Statements show up in this header file)
class Statement {
public:
Statement();
virtual void print() = 0;
virtual void evaluate(SymTab &symTab) = 0;
};
class Statements {
public:
Statements();
void addStatement(Statement *statement);
void evaluate(SymTab &symTab);
void print();
private:
std::vector<Statement *> _statements;
};
From the statements.cpp file:
void Statements::addStatement(Statement *statement) { _statements.push_back(statement); }
I'm a little confused. Let me know if I didn't supply enough code, I think this is everything that's pertinent. It's part of a interpeter.