所以我有这个课程:
此类的目的是将后修复代数表达式(1234 * + - )更改为中缀表达式(1 * 2 + 3-4)。
class PostfixExpression
{
private:
string postfix;
vector<string> tokenizedEx;
double result;
void tokenizeStr(); // Where do I call this?
public:
PostfixExpression(string p);
//mutators, and accessors for string and double only
//no accessor and mutator for vectors
string changeToInfix() const;
};
PostfixExpression::PostfixExpression(string p)
{
setPost(p);
}
//mutators, and accessors
void PostfixExpression::tokenizeStr()
{
stringstream ss(postfix);
tokenizedEx.clear();
string hold;
int i = 0;
while (ss >> hold)
{
tokenizedEx.push_back(hold);
}
}
//....
私有类tokenizeStr()
的目的是标记字符串并将其放入vector<string> tokenizedEx
。
例如,在我的主要内容中,我会有
int main()
{
PostfixExpression test("1 2 3 4 * + -");
}
现在我正在尝试对字符串进行标记,并通过私有成员函数vector<string> tokenizedEx
将其更新为tokenizeStr()
。
在标记化后,向量中的每个元素应该包含整数或运算符,但我似乎找不到调用函数的方法。
我知道从main调用私有成员函数是完全非法的,因为该函数是私有的。
任何建议都表示赞赏。
答案 0 :(得分:1)
你的setPost方法做了什么?设置后缀成员?
在调用setPost之后,您可以在构造函数中调用tokenizeStr()。
答案 1 :(得分:0)
我在你的类中看到一个你没有显示实现的changeToInfix()方法。该方法应该是调用tokenizeStr()的方法。