• 6271阅读
  • 8回复

[提问]请问如何从外部修改全局变量的值? [复制链接]

上一主题 下一主题
离线icetgv
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-09
大家好,我是菜鸟。现在我有3个类,分别为A、public、C,现在public.cpp/public.h作为公共类,我在public.h中定义了extern int mc;
并且在public.cpp中初始化了int mc=0;现在我想通过C.cpp来修改mc的值,通过信号与槽来show()A并获得修改后的mc值。但是由于A.h包含了public.h,C.h包含了A.h和public.h,所以A.h不能再包含C.h,否则编译的时候就提示A不是一个类。现在的问题是C中修改后的mc值无法传递到A中,请大侠们帮忙,十分感谢。
[ 此帖被icetgv在2011-05-09 17:08重新编辑 ]
离线icetgv
只看该作者 1楼 发表于: 2011-05-09
或者除了全局变量还有什么其他方法把C中的mc值传递到A中呢?前提是A.h不能#include C.h
离线icetgv
只看该作者 2楼 发表于: 2011-05-09
我大概明白我这里无法修改的原因是虽然我在C中修改了mc的值,但在执行A.show()的时候A中重新加载的外部变量来自public。
离线icetgv
只看该作者 3楼 发表于: 2011-05-09
但是怎样才能解决这样的问题呢?请高手帮忙。。。。。
离线dbzhang800

只看该作者 4楼 发表于: 2011-05-09
简单说一点,供参考:

1.  如果其他文件不能包含你的 C.h 这个头文件。这只能说明一个问题:这个头文件有问题。
2.  既然是全局变量,为何有把 C 中的mc传递到A一说?
3. 不用全局变量的话,Qt的信号和槽不是很好的选择么?
...
离线icetgv
只看该作者 5楼 发表于: 2011-05-09
引用第4楼dbzhang800于2011-05-09 17:22发表的  :
简单说一点,供参考:
1.  如果其他文件不能包含你的 C.h 这个头文件。这只能说明一个问题:这个头文件有问题。
2.  既然是全局变量,为何有把 C 中的mc传递到A一说?
3. 不用全局变量的话,Qt的信号和槽不是很好的选择么?
.......

不是的,仅仅是A.h不能包含C.h,我想这是因为C.h中已经包含了A.h,两个类不能相互包含吧?我的意思是说我想通过mc的值控制C的显示模式。信号与槽的话A.h中如果不能包含C.h的话该如何实现呢?非常感谢!
离线dbzhang800

只看该作者 6楼 发表于: 2011-05-09
引用第5楼icetgv于2011-05-09 17:39发表的  :
信号与槽的话A.h中如果不能包含C.h的话该如何实现呢?非常感谢!


前置声明

class C;
离线icetgv
只看该作者 7楼 发表于: 2011-05-09
引用第6楼dbzhang800于2011-05-09 17:42发表的  :
前置声明
class C;


恩,非常感谢。我是个菜鸟,还是不太清楚不同类间的信号与槽该如何连接?比如我想通过点击C中的newaction发送信号到A中,执行A中的槽函数该怎么写呢?
connect(ui->newaction,SIGNAL(triggered()),?,SLOT(?));
说明一下,这是我的毕业设计里的内容,我刚接触QT不久,请帮下忙,谢谢。
离线icetgv
只看该作者 8楼 发表于: 2011-05-09
我主要是想传递参数到A中,而不针对任何对象。信号与槽没有对象也可以的吗?
快速回复
限100 字节
 
上一个 下一个