无法调用继承的受保护泛型类成员

时间:2012-01-07 12:49:30

标签: c++ templates generics inheritance

  

可能重复:
  Accessing inherited variable from templated parent 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;
};

我创建了这个派生类:

#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.... */

现在我得到的错误是:

  • ./include / ArithmeticExpressionParser.h | 45 | 错误:'get_token'没有依赖于模板参数的参数,因此'get_token'的声明必须是可用[-fpermissive] |
  • ./ include / ArithmeticExpressionParser.h | 25 | 错误:未在此范围内声明'token' |
  • 等。等

    我究竟做错了什么?

    1 个答案:

    答案 0 :(得分:3)

    您需要this->token