我有一个字符串指针string* ifxPtr;
,我试图做的是将此指针设置为指向用户输入,然后循环遍历它的每个字符。
string* ifxPtr;
void Expression::GetInfix(string data) // This method runs first and it's setting the pointer to point to previously passed user input
{
ifxPtr = &data;
ConvertToPostfix();
}
void Expression::ConvertToPostfix()
{
for (int i = 0; i < *ifxPtr->length; i++) // Here's the struggle, compiler is complaining about *ifxPtr with message Cannot apply binary '<' to 'int' and 'unassigned() const'
{
//Do something here
}
}
答案 0 :(得分:3)
length
是一个函数,它应该是length()
->
length()
返回的是size_t
以下是我要使用的内容:
int length = static_cast<int>((*ifxPtr).length());
答案 1 :(得分:1)
foo->
是(*foo).
的简写。不要将运算符加倍,也应该是length()
:
for (int i = 0; i < ifxPtr->length(); i++)
另外,要小心这个设计,因为一个简单的错误而遇到未定义行为的可能性很大。
答案 2 :(得分:0)
如果你使用*之前它意味着使用指针指向的值。
string s,* p; P =&安培; S;
这里* p.lenght()与s.length相同如果你想通过指针访问你必须使用它像p-&gt;长度()。