2013-04-26 36 views
1

我一直在研究这个问题一段时间。我“米只是希望从一个类传递一个字符值到另一个visual C++中的全局变量

在我的头文件我有一个变量声明:

extern char variable1; 

在class1.cpp我有同样的变量声明:

char variable1 = 'N'; 

在class2.cpp我有相同的变量声明:我不此由于初始化为Y/N所需的逻辑在class1.cpp

char variable1; 

我对这将如何工作的假设是,我会通过逻辑将其设置为Y或将其保持为N,如在类1中初始化,一旦函数完成,我将单击表单上的按钮到下一个类,因为它们都具有相同的名称,并且文件名在关键字extern的头文件中,它会来回传递值,我的想法是错误的吗?我还是新来的Visual C++,所以我只是想学习。

+0

我认为我们需要更多的细节,实际上并不清楚 – Nagasaki 2013-04-26 14:48:35

+1

当您在class2.cpp中再次声明变量时,是否发生构建错误?你所要做的就是在class2.cpp中包含头文件,并且只定义一次变量(你已经在class1.cpp中完成了)。 – Mahesh 2013-04-26 14:50:17

+0

我不确定你还需要什么。我一直在阅读的是,你需要将头文件中的变量声明为extern,然后在你计划使用变量的所有.cpp类中再次声明该文件。仔细研究如何真正传递数据,目前它没有在两个类之间传递 – Criel 2013-04-26 14:50:24

回答

2

char variable1;没有extern不是声明,这是一个定义。这意味着你是定义变量在class2.cppclass1.cpp,这是非法的。只在一个.cpp文件中定义它。其他.cpp文件应该包含声明的头文件,这将使他们能够访问变量。

+0

这是我的问题。我对传递变量的理解并不完全正确,谢谢大家! – Criel 2013-04-26 14:57:38

+0

@Criel只是为了澄清 - 你没有在任何地方传递任何东西。你的程序中只有一个全局变量,并且你从两个不同的位置访问它。传递意味着将某些东西作为一个函数的参数,并且通常比共享的全局状态更好。 – Angew 2013-04-26 15:01:55

0

如果您在class1的cpp文件中声明了extern char variable1;,并且在class2中定义了char variable1;,那么您应该可以做到您想要的。