在类中使用私有成员函数

Using a private member function in the class

本文关键字:成员 函数      更新时间:2023-10-16

所以我有这个类:

此类的目的是将后固定代数表达式 (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 * + -");
}

现在我正在尝试标记字符串并通过私有成员函数 tokenizeStr() 将其更新为vector<string> tokenizedEx

标记化后,向量中的每个元素都应该包含一个整数或一个运算符,但我似乎找不到调用该函数的方法。

我知道从 main 调用私有成员函数是完全非法的,因为该函数是私有的。

任何建议不胜感激。

你的 setPost 方法做了什么?设置后缀成员?

你可以在构造函数中调用tokenizeStr(),在调用setPost之后。

我在你的类中看到了一个changeToInfix()方法,你还没有展示它的实现。该方法应该是调用tokenizeStr()的方法。