C++ 将先前指定的指针值传递给循环

C++ 将先前指定的指针值传递给循环,c++,pointers,C++,Pointers,我有一个字符串指针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; ConvertToP

我有一个字符串指针
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
    }
}
string*ifxPtr;
void Expression::GetInfix(字符串数据)//此方法首先运行,并将指针设置为指向以前传递的用户输入
{   
ifxPtr=&data;
ConvertToPostfix();
}
void表达式::ConvertToPostfix()
{

对于(inti=0;i<*ifxPtr->length;i++)//这是一个难题,编译器正在抱怨*ifxPtr和消息不能应用二进制'
foo->
(*foo)的简写。
。不要将运算符加倍,它也应该是
length()

for(int i=0;ilength();i++)
此外,在设计时要小心,因为一个简单的错误而导致未定义行为的可能性很大

  • length
    是一个函数,它应该是
    length()
  • 你 如果使用
    ->
  • 结果 从
    length()
    返回的是
    size\t
  • 以下是我将使用的:

    int length = static_cast<int>((*ifxPtr).length());
    
    int length=static_cast((*ifxPtr.length());
    
    如果在表示使用指针指向的值之前使用and*

    字符串s,*p; p=&s


    这里的*p.lenght()与s.length()相同,如果您想通过指针访问,则必须像下面的p->length()一样使用它.

    它仍在抱怨同一条消息。@Nottynija我假设您使用的是
    std::string
    ?您确定它包含在其中,并且您确定它不仅仅是关于比较无符号整型和有符号整型的警告吗?是的,我使用的是std::string,不是警告。这是一个错误,因此无法编译-无法应用我编辑的二进制文件我的答案是,这是一个函数而不是一个成员,贾斯汀的答案更好。我甚至没有发现
    1
    ,很好。
    int length = static_cast<int>((*ifxPtr).length());