在没有设置全局变量的情况下确定是否在C ++中调用函数有什么好方法?
#include <iostream>
bool var = false;
void X ()
{
if (var) {std::cout<<" Y called "<< std::endl;}
}
void Y ()
{var = true;}
int main()
{
Y();
X();
}
我真的想要一个在不设置全局变量的情况下执行此操作的示例。
答案 0 :(得分:2)
如果Y
和X
以这种方式相关,那么您可以将它们移到class
:
struct Foo
{
void X()
{
if (var) {std::cout<<" Y called "<< std::endl;}
}
void Y()
{
var = true;
}
Foo() : var(false) /*this is the constructor*/
{
}
private:
bool var;
};
如果您不想打扰static
的实例,您甚至可以成为会员Foo
。
还要注意使用构造函数。也许你可以将你的初始化内容放在那里;那么你就不需要在X
中检查初始化状态。
答案 1 :(得分:0)
通常的方法是使用静态局部变量:
void X() {
static bool done = false;
// whatever
done = true;
}
静态变量在函数第一次运行时初始化。在后续调用中,它具有上次分配给它的任何值。