在main中调用公共函数的问题

时间:2019-07-13 20:54:31

标签: c++ function public-method

我正在尝试在main中调用公共函数validInfixCheck(),但在尝试编译时遇到此错误:

g ++ CalculatorMain.cpp CalculatorExp.cpp

In function `main':
calculatorMain.cpp:(.text+0x99): undefined reference to 
`CalculatorExp::validInfixCheck(std::string)'
collect2: error: ld returned 1 exit status

注意:validInfixCheck()目前不执行任何操作。我只想确保可以在main中使用它。

我尝试调用没有参数的公共函数来验证这不是问题,并且显示相同的错误。

calculatorMain.cpp

#include "CalculatorExp.h"
#include<iostream>
#include <string>

using namespace std;

//prototype declarations
string getInfixExpression();

int main()
{
    CalculatorExp calc; 
    string inputExpression;
    inputExpression = getInfixExpression();

    calc.validInfixCheck(inputExpression);

    return 0;
}

string getInfixExpression()
{
    string exp;
    cout<<"Enter infix expression to evaluate: "<<endl;
    cin>>exp;

    return exp;
}

CalculatorExp.cpp

#include "CalculatorExp.h"
#include <string>
#include <stack> 

using namespace std;

CalculatorExp::CalculatorExp()
{
  //default constructor 
}

// public //
// valid input check
bool validInfixCheck(string inputExpression)
{
    return 0;
}

CalculatorExp.h

#ifndef CALCULATOREXP_H
#define CALCULATOREXP_H
#include <string>
#include <stack> 


using namespace std;

class CalculatorExp
{
    public:
     /** Default Constructor; 
    * @param none
    * @pre None*/
        CalculatorExp();  

     /** CONSTANT MEMBER FUNCTIONS*/
    /** returns the exp.
    /* @pre None
    /* @post The value returned is the exp*/
        string get_exp( ) const { return exp; } 

    /** FUNCTIONS*/
    /** returns true if exp is validated.
    /* @pre None
    /* @post The value returned is true if exp is validated.*/  
    bool validInfixCheck(string inputExpression);


    private:
    /** expression*/
        string exp;

};

#endif 

1 个答案:

答案 0 :(得分:1)

您已在类CalculatorExp.h中声明了validInfixCheck()作为类CalculatorExp的方法。但是,您尚未将此函数定义为类的成员,因为在定义中省略了类名前缀。因此,请在CalculatorExp.cpp中进行此更改:

bool CalculatorExp::validInfixCheck(string inputExpression)
{
    return 0;
}