我正在使用Visual C ++ 2010 Express。我有一个表单(Form1.h
),其中包含一个按钮(btn1
)和一个标签(label1
)。
当我点击按钮时,我想从不同的头文件(testing.h
)调用一个函数,然后该文件将继续更改标签中的文本。
我拥有的是这样的......
Form1.h
#include "testing.h"
... standard form code generated by Visual Studio
private: System::Windows::Forms::Label^ label1;
...
private: System::Void btn1_Click(System::Object^ sender, System::EventArgs^ e) {
testfunc1();
}
};
其中testing.h类似......
#ifndef _TESTING_FUNCS
#define _TESTING_FUNCS
void testfunc1(){
label1->Text = "Text has been changed from outside.";
}
#endif
当我尝试编译并运行它时,我收到的错误是'label1' is an undeclared identifier
(在testing.h中),而错误是指“left of '->Text' must point to class/struct/...
”
我是C ++的新手,通常使用Java,所以这里有一些新的东西。对我来说,有两个明显的选择:
1)将标签作为参数传递给函数
2)以某种方式访问testing.h
头文件中的标签,无参考
但我不确定该如何做。
答案 0 :(得分:2)
标签是类的私有变量,就像在Java中一样,无法从外部访问,尤其是在静态上下文中。您可以传递标签,也可以在表单中创建一个访问者函数并传递整个表单。
传递标签的示例:
void testfunc1(System::Windows::Forms::Label^ someLabel)
{
someLabel->Text = "Text has been changed from outside.";
}
致电:
System::Void btn1_Click(System::Object^ sender, System::EventArgs^ e)
{
testfunc1(label1);
}