0

Possible Duplicate:
Accessing inherited variable from templated parent class

There's this class:

template<typename T> class Parser
{
    public:
        Parser() : count(0) {}
        virtual void parse(const string&);
    protected:
        virtual void get_token(void);

        char token;
        string expression;
        int count;
};

and I made this derived class:

#include <sstream>
#include <cstring>
#include "Parser.h"

template <typename T> class ArithmeticExpressionParser : public Parser<T>
{
    public:
        ArithmeticExpressionParser() : Parser<T>() {}
    protected:
        virtual T parse_plus_minus();
        virtual T parse_divide_multiply()
        {
            T result , temp;
            result = parse_exponent();

            if(this.token == '/')
            {
                temp = parse_divide_multiply();
                result /= temp;
            }

            else if(token == '*')
            {
                temp = parse_divide_multiply();
                result *= temp;
            }

            else if(token == '%')
            {
                temp = parse_divide_multiply();
                result %= temp;
            }

            return result;
        }

        /* more code.... */

Now the errors I'm getting are:

  • ./include/ArithmeticExpressionParser.h|45|error: there are no arguments to ‘get_token’ that depend on a template parameter, so a declaration of ‘get_token’ must be available [-fpermissive]|
  • ./include/ArithmeticExpressionParser.h|25|error: ‘token’ was not declared in this scope|
  • etc. etc.

    What exactly am I doing wrong?

    Community
    • 1
    • 1
    ApprenticeHacker
    • 21,351
    • 27
    • 103
    • 153

    1 Answers1

    3

    You need this->token.

    Xeo
    • 129,499
    • 52
    • 291
    • 397