簡體   English   中英

在類中使用私有成員函數

[英]Using a private member function in the class

所以我有這個課:

此類的目的是將后綴代數表達式(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方法做什么? 設置后綴成員?

您可以在調用setPost之后立即在構造函數中調用tokenizeStr()。

我在您的類中看到了一個changeToInfix()方法,但尚未顯示其實現。 該方法應該是調用tokenizeStr()的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM