在类中使用私有成员函数

时间:2015-01-23 21:36:59

标签: c++ class private-members

所以我有这个课程:

此类的目的是将后修复代数表达式(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调用私有成员函数是完全非法的,因为该函数是私有的。

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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