We help IT Professionals succeed at work.

Compile Error

Chris Pfeiffer
on
649 Views
Last Modified: 2012-05-10
I am sure this is easy, I am trying to explore C++ using random websites and can not figure out why this will not compile.

I get the compile error at error C2660: 'SubExpression::parse' : function does not take 1 arrgument.

Thanks in advance

I have included subexpression as well
#include <iostream>
#include <fstream>
#include <strstream>
#include <string>
#include <vector>
using namespace std;

#include "expression.h"
#include "subexpression.h"
#include "symboltable.h"
#include "parse.h"

SymbolTable symbolTable;

void parseAssignments(strstream& in);

int main()
{
    const int SIZE = 256;
    Expression* expression;
    char paren, comma, line[SIZE];
    string program;

    ifstream fin("input.txt");
    while (true)
    {
    
        symbolTable.init();
        fin.getline(line, SIZE);
        if (!fin)
            break;
        strstream in(line, SIZE);
        in >> paren;
        cout << line << " ";
        try
        {
            expression = SubExpression::parse(in); 
            in >> comma;  
            parseAssignments(in);
            double result = expression->evaluate();
            cout << "Value = " << result << endl;    
        }
        catch (exception& e)
        {
              cout << "Standard exception: " << e.what() << endl;
        }
        
    }
    return 0;
    
}

void parseAssignments(strstream& in)
{
    char assignop, delimiter;
    string variable;
    double value;
    do
    {
        variable = parseName();
        in >> ws >> assignop >> value >> delimiter;
        symbolTable.insert(variable, value);
    }
    while (delimiter == ',');
}

Open in new window

#include <iostream>
using namespace std;

#include "expression.h"
#include "subexpression.h"
#include "operand.h"
#include "plus.h"
#include "minus.h"
#include "times.h"
#include "divide.h"

SubExpression::SubExpression(Expression* left, Expression* right)
{
    this->left = left;
    this->right = right;
}

Expression* SubExpression::parse()
{
    Expression* left;
    Expression* right;
    char operation, paren;
    
    left = Operand::parse();
    cin >> operation;
    right = Operand::parse();
    cin >> paren;
    switch (operation)
    {
        case '+':
            return new Plus(left, right);
        case '-':
            return new Minus(left, right);
        case '*':
            return new Times(left, right);
        case '/':
            return new Divide(left, right);
    }
    return 0;
}

Open in new window

Comment
Watch Question

CERTIFIED EXPERT
Top Expert 2012
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
Chris PfeifferMilitary

Author

Commented:
Man, its time to go to sleep.. Thanks for that, as soon as I read it I wondered how I missed it..
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.