怎么根据条件来声明一个对象 并在条件语句外继续使用
如何根据条件来声明一个对象 并在条件语句外继续使用
比如如下代码
我根据b的值决定是否创建类A的对象a,并在执行了一些其他函数之后,再次根据b的值决定是否执行函数run(),但是对象a是个局部变量,第二次是无法使用它的
我的问题是有什么方法可否让a的作用域扩大到整个main函数
或者有什么其他的方法能达到我的预期效果,就是根据某个条件来创建对象,并在条件结构外继续使用这个对象
------解决方案--------------------
用全局变量或者是专门定义一个对象管理器。
------解决方案--------------------
指针就行。
其实最好是把 b==1 的逻辑合为一处,都放在一个块儿里面。程序干净利落,逻辑也清晰。
------解决方案--------------------
Is an an assign operation, it always return true. You meant to do:
------解决方案--------------------
扩大 范围就可以了
全局变量 或者堆栈!
------解决方案--------------------
如果lz是不想因为A的空间问题这么做的话,可以定义一个A的指针比如A*p初始化为NULL,如果进入条件后,可以动态new一个,然后让这个指针指向开辟的地址 p =new A,下边可以直接判断这个指针是否为非NULL来确定是否执行p->run();
------解决方案--------------------
{A a;}
在这个块结束后 a的生命周期结束
A *a;
if(b==1)
{ a = new A;}
------解决方案--------------------
这样就OK拉
------解决方案--------------------
上面一个忘记释放了。我的错
------解决方案--------------------
用编译宏
#define USING_A
#ifdef USING_A
Class A
{
public:
run();
};
#endif // #ifdef USING_A
main()
{
#ifdef USING_A
A a;
#endif
.........
#ifdef USING_A
a.run();
#endif
}
------解决方案--------------------
用容器
main()
{
bool b=1;
比如如下代码
Class A
{
public:
run();
};
main()
{
bool b=1;
if(b=1)
{A a;}
.........
.........
if(b=1)
{a.run();}
}
我根据b的值决定是否创建类A的对象a,并在执行了一些其他函数之后,再次根据b的值决定是否执行函数run(),但是对象a是个局部变量,第二次是无法使用它的
我的问题是有什么方法可否让a的作用域扩大到整个main函数
或者有什么其他的方法能达到我的预期效果,就是根据某个条件来创建对象,并在条件结构外继续使用这个对象
------解决方案--------------------
用全局变量或者是专门定义一个对象管理器。
------解决方案--------------------
指针就行。
main()
{
bool b=1;
A* pa = 0;
if(b=1)
{pa = new A;}
.........
.........
if(b=1 && pa)
{pa->run();}
delete pa;
}
其实最好是把 b==1 的逻辑合为一处,都放在一个块儿里面。程序干净利落,逻辑也清晰。
------解决方案--------------------
if(b=1)
Is an an assign operation, it always return true. You meant to do:
if(b==1)
------解决方案--------------------
扩大 范围就可以了
全局变量 或者堆栈!
------解决方案--------------------
如果lz是不想因为A的空间问题这么做的话,可以定义一个A的指针比如A*p初始化为NULL,如果进入条件后,可以动态new一个,然后让这个指针指向开辟的地址 p =new A,下边可以直接判断这个指针是否为非NULL来确定是否执行p->run();
------解决方案--------------------
{A a;}
在这个块结束后 a的生命周期结束
A *a;
if(b==1)
{ a = new A;}
------解决方案--------------------
Class A
{
public:
run();
};
main()
{
bool b=1;
A* a = NULL;
if(b=1)
{a = new A();}
.........
.........
if(b=1)
{a.run();}
}
这样就OK拉
------解决方案--------------------
Class A
{
public:
run();
};
main()
{
bool b=1;
A* a = NULL;
if(b=1)
{a = new A();}
.........
.........
if(b=1)
{a->run();}
delete a;
a = NULL
}
上面一个忘记释放了。我的错
------解决方案--------------------
用编译宏
#define USING_A
#ifdef USING_A
Class A
{
public:
run();
};
#endif // #ifdef USING_A
main()
{
#ifdef USING_A
A a;
#endif
.........
#ifdef USING_A
a.run();
#endif
}
------解决方案--------------------
用容器
main()
{
bool b=1;