如何有两个相互调用C ++的函数

时间:2013-01-30 07:34:52

标签: c++ mutual-recursion

我有两个这样的函数,它们对if循环进行模糊处理:

void funcA(string str)
{
    size_t f = str.find("if");
    if(f!=string::npos)
    {
        funcB(str);        //obfuscate if-loop
    }
}

void funcB(string str)
{
     //obfuscate if loop
     funcA(body_of_if_loop);     //to check if there is a nested if-loop
}

如果我将funcA放在funcB之前,funcB将无法看到funcA,反之亦然。

欢迎任何帮助或建议。

2 个答案:

答案 0 :(得分:15)

你想要的是forward declaration。在你的情况下:

void funcB(string str);

void funcA(string str)
{
    size_t f = str.find("if");
    if(f!=string::npos)
    {
        funcB(str);        //obfuscate if-loop
    }
}

void funcB(string str)
{
     //obfuscate if loop
     funcA(body_of_if_loop);     //to check if there is a nested if-loop
}

答案 1 :(得分:10)

forward declaration可行:

void funcB(string str); 

void funcA(string str)
{
    size_t f = str.find("if");
    if(f!=string::npos)
    {
        funcB(str);        //obfuscate if-loop
    }
}

void funcB(string str)
{
     //obfuscate if loop
     funcA(body_of_if_loop);     //to check if there is a nested if-loop
}