C++ cli 多个表单相互覆盖变量
我在C++/CLI中创建多个windows窗体以同时运行测试,我可以这样做,但我在类中定义了私有变量,但当第二个窗体写入其版本的变量时,它会覆盖该变量的所有其他窗体版本C++ cli 多个表单相互覆盖变量,c++-cli,multiple-forms,C++ Cli,Multiple Forms,我在C++/CLI中创建多个windows窗体以同时运行测试,我可以这样做,但我在类中定义了私有变量,但当第二个窗体写入其版本的变量时,它会覆盖该变量的所有其他窗体版本 array<String^>^args = Environment::GetCommandLineArgs(); int args1 = System::Convert::ToInt16(args[1]); int i; #pragma o
array<String^>^args = Environment::GetCommandLineArgs();
int args1 = System::Convert::ToInt16(args[1]);
int i;
#pragma omp parallel for
for(i = 0; i < args1; i++)
{
Sleep(1000);
Form1^ form1 = gcnew Form1(i);
form1->Show();
}
private ref class Form1 : public System::Windows::Forms::Form
{
private:
static int formnumber;
static SerialPort^ serialPort = gcnew SerialPort();
public:
Form1(int formnum)
{
array<String^>^args = Environment::GetCommandLineArgs();
formnumber = formnum;
int a = 65;
jigid = a + formnum;
comnumber = formnumber + Convert::ToInt16(args[2]);
InitializeComponent();
}
}
array^args=Environment::GetCommandLineArgs();
int args1=System::Convert::ToInt16(args[1]);
int i;
#pragma-omp并行
对于(i=0;iShow();
}
私有ref类Form1:public System::Windows::Forms::Form
{
私人:
静态整数;
静态SerialPort ^SerialPort=gcnew SerialPort();
公众:
表格1(int formnum)
{
数组^args=Environment::GetCommandLineArgs();
formnumber=formnum;
INTA=65;
jigid=a+formnum;
comnumber=formnumber+Convert::ToInt16(参数[2]);
初始化组件();
}
}
当我创建2个表单时,formnum将始终为1,以便以后在表单中使用,因为创建第2个表单时会在第一个表单中重写formnum。
如何使表单不能覆盖其他变量?不要将它们声明为静态的当然不是C++。我帮你修好了。但是在将来,请注意C++/CLI与C++是一个非常不同的野兽这里有两个选项,1。您可能是从其他地方复制了这段代码(或其中的一部分),但没有完全理解它。在这种情况下,您应该首先查阅C++/CLI上的一些认真的学习资源,并尝试理解代码的每一行,然后再尝试解决它的特定问题。或2。您有意识地自己编写了这段代码,包括变量声明中的
静态
,在这种情况下,您一定有理由将它们声明为static
,这个问题已经过时了。我最初是在类外声明变量的,有一个编译时错误,通过将变量声明为static解决了,所以当我将变量移动到类内时,我保留了静态变量,但没有想想看,汉克斯现在工作得很好。必须更改:静态SerialPort ^SerialPort=gcnew SerialPort();至:SerialPort^ SerialPort;并在表单内部:serialPort=gcnew serialPort();因为它抱怨初始化它。