在 class 中使用私有成员函数
Using a private member function in the class
所以我有这个 class:
这个class的目的是将post固定代数表达式(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);
}
}
//....
私有 class tokenizeStr()
的目的是将字符串标记化并放入 vector<string> tokenizedEx
。
例如,在我的 main 中,我会
int main()
{
PostfixExpression test("1 2 3 4 * + -");
}
现在我试图通过私有成员函数 tokenizeStr()
.
将字符串标记化并更新为 vector<string> tokenizedEx
标记化后,向量中的每个元素都应该包含一个整数或一个运算符,但我似乎找不到调用该函数的方法。
我知道从 main 调用私有成员函数是完全非法的,因为该函数是私有的。
如有任何建议,我们将不胜感激。
我在您的 class 中看到一个 changeToInfix() 方法,您没有显示其实现。该方法应该是调用 tokenizeStr() 的方法。
您的 setPost 方法有什么作用?设置后缀成员?
您可以在调用 setPost 后立即在构造函数中调用 tokenizeStr()。
所以我有这个 class:
这个class的目的是将post固定代数表达式(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);
}
}
//....
私有 class tokenizeStr()
的目的是将字符串标记化并放入 vector<string> tokenizedEx
。
例如,在我的 main 中,我会
int main()
{
PostfixExpression test("1 2 3 4 * + -");
}
现在我试图通过私有成员函数 tokenizeStr()
.
vector<string> tokenizedEx
标记化后,向量中的每个元素都应该包含一个整数或一个运算符,但我似乎找不到调用该函数的方法。
我知道从 main 调用私有成员函数是完全非法的,因为该函数是私有的。
如有任何建议,我们将不胜感激。
我在您的 class 中看到一个 changeToInfix() 方法,您没有显示其实现。该方法应该是调用 tokenizeStr() 的方法。
您的 setPost 方法有什么作用?设置后缀成员?
您可以在调用 setPost 后立即在构造函数中调用 tokenizeStr()。