我有一个Form1.h和一个Form2.h
Form1.h已经包含Form2.h,因为我通过单击Form1中的按钮启动Form2。那么我如何将Form1.h中的变量传递给Form2.h
以下是Form1.h
的示例#include "Form2.h"
String^ str = "Hello World"; //This variable needs to be passed to Form2.h
//Other windows forms application code here
Form2.h的一个例子
//#include "Form1.h" this will cause an error
//How would i pass variable str to here?
//Other windows forms application code here
编辑:
这就是我修复它的方式
这是我修复它的方式。
Form1.h
#include "Form1.h"
Form2^ frm = gcnew Form2;
frm->Username = "text here";//This passes the variables.
frm->Password = "other text";
Form2.h
public: String^ Username;
public: String^ Password;
答案 0 :(得分:1)
不完全确定您的要求,但我假设您要在 Form1 类中设置 Form2 类中的变量?如果是这样的话:
class Form1{
private:
int data;
public:
Form1(){data=4;}
int getData(){return data;} //returns Form1 data variable
void setForm2Data(Form2&); //sets Form2 data
};
class Form2{
private:
int data;
public:
void setData(int inData){data = inData;}
};
void Form1::setForm2Data(Form2 &o){
o->setData(getData()); //argument is a Form2 object, "setData" can set that objects data variable
}
答案 1 :(得分:0)
由于预处理程序指令导致双重包含,因此出现错误。 为避免这种情况,您可以使用pragma guards
Form1.h:
#ifndef FORM1_H
#define FORM1_H
#include "Form2.h"
extern string str = "Hello World";
#endif
Form2.h:
#include "Form1.h"
答案 2 :(得分:0)
有几种方法......一种是使用全局变量(不一定是最好的方式......取决于每种情况)
首先,您可以使用include guard解决多重包含问题。
然后你可以在标题中使用extern关键字声明一个全局变量,并插入实现文件中的值。
例如:
//file: mylib.h
#ifndef MYLIB_H
#define MYLIB_H
extern int myGlobalVar;
#endif
//file: mylib.cpp
#include "mylib.h"
int myGlobalVar = 123;
现在您可以在其他文件中随时随地#include "mylib.h"
访问同一个变量