我如何获得一个函数来调用调用它的函数?

tic*_*ana 6 c++

我希望以下简单函数调用调用它的函数,但是函数由多个函数调用,因此它需要识别哪个函数专门调用它然后调用它.

int wrong()
{
    std::cout << "WRONG \n";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

作为后续行动,这种功能是否会更好地表达为空白?

Mik*_*kis 3

你想要的是回调。C++ 中的回调是这样实现的:

typedef int (*CallbackType)( char c );  

int wrong( CallbackType callback )
{
    std::cout << "WRONG \n";
    int r = callback( 'x' );
    return r;
}

int also_wrong( char c )
{
    return wrong( also_wrong );
}
Run Code Online (Sandbox Code Playgroud)

当然,这会导致递归失控,因此会给您带来很多麻烦,但它肯定回答了您的问题。

是的,如果它所做的只是返回0,那么这种函数最好表达为返回void

  • 您的代码示例很糟糕。首先,在 C++ 中,`main` 必须返回 `int`。其次,在C++中,不允许自己调用“main”函数。 (7认同)
  • @mike 在 C++ 中调用 main 是不合法的。它可能在某些编译器和系统中工作,但这仅仅意味着当您的编译器更新、更改、您获得新的库、不同的目标或无数其他原因时,您的代码会中断。仅在值得的情况下使用未定义的行为,而玩具 SO 示例不是其中之一。 (4认同)