过去几个小时我一直在谷歌上搜索,我仍然不确定上述问题的答案。代码如下:
optionsForm.h
public: String^ hostScreenOption;
private: System::Void saveButton_Click(System::Object^ sender, System::EventArgs^ e) {
if (hostScreenTrueRadio -> Checked == true)
{
hostScreenOption = "True";
}
else if (hostScreenFalseRadio -> Checked == true)
{
hostScreenOption = "False";
}
Form::Close();
}
finalForm.h
#include "optionsForm.h"
String^ name;
String^ city;
private: System::Void continueButton_Click(System::Object^ sender, System::EventArgs^ e) {
StreamWriter^ optionsWriter = gcnew StreamWriter("Game Files\\Millionaire\\preferences.txt");
if (nameBox -> Text == "")
{
warningLabel -> Text = "Please must enter your name!";
}
else
{
name = nameBox -> Text;
}
if (cityBox -> Text == "")
{
warningLabel -> Text = "You must enter your city and country!";
}
else
{
city = cityBox -> Text;
}
optionsWriter -> WriteLine (hostScreenOption);
optionsWriter -> WriteLine (name);
optionsWriter -> WriteLine (city);
delete optionsWriter;
Application::Exit();
Process::Start("Game Files\\Millionaire Host Screen.exe");
}
我所拥有的是optionsForm,这是一个带有单选按钮和标签的表单,用于选择选项(每个单选按钮为true或false)如果单击true按钮,则指定" True&#34的值;,作为字符串,到hostScreenOption,反之亦然。在finalForm上,用户输入他们的姓名,城市和国家,然后按继续。名称文本框内的文本和城市文本框内的文本分别分配给字符串变量name和city。最后,所有这些变量都写入.txt文件,该文件由单独的程序加载。名称和城市值将写入.txt文件,没有问题,但hostScreenOption不是。我收到的错误是" hostScreenOption - 未声明的标识符"由于我已将其声明为公共变量并包含optionsForm.h,因此我感到困惑。你们中的任何人都能指出我可能做错的正确方向,或者做出我尝试的更有效的方法吗?
答案 0 :(得分:0)
optionsForm.h
中的变量必须是extern,因此:public: extern String ^ hostScreenOption;
。
然后,您必须在finalForm.h
:String ^ hostScreenOption;
我不确定这是否有用,因为我不知道hostScreenOption
是全局定义的还是在课堂上,你必须尝试。
但为什么要使用String ^
?这需要花费大量内存,因此请尝试使用bool
并在optionsForm.h
中将其声明为extern和global,然后在finalForm.h
中执行相同操作:bool hostScreenOption;
至少用if条件替换optionsWriter -> WriteLine (hostScreenOption);
:
if (hostScreenOption)
optionsWriter -> WriteLine ("True");
else
optionsWriter -> WriteLine ("False");