将类型传递给Windows窗体构造函数,并将其转换为类指针以使用它
问题描述:
我在C++中使用Visual Studio 2008 Professional与Windows窗体,我有一个类,我必须传递给另一个窗体,所以这里是我在做什么将类型传递给Windows窗体构造函数,并将其转换为类指针以使用它
//FirstFile.cpp
Usuario user;
user.usuario = "test";
user.senha = "*";
ChooseService cs(user);
cs.ShowDialog();
//SecondFile.cpp
public ref class ChooseService : public System::Windows::Forms::Form
{
public:
Usuario* usuario;
ChooseService(Usuario user)
{
usuario = user;
//I need to cast the Usuario into Usuario*, so I can use it in the class
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
/...
正如我在我的评论说,我需要投“Usuario”到“Usuario *”这样我就可以在课堂上使用访问“这个”,顺便说一句,我不能让这个
Usuario usuario;
而不是指针,因为windows窗体不允许你,你必须使用指针。那我该怎么做?有什么窍门吗? 我希望我很清楚,谢谢!
答
充分利用对象的指针很简单:
Usuario user;
Usuario* pUser = &user;
但它可能使指针无效,因为user
是自动存储,并可能导致在使用pUser
之前销毁。
我建议你分配user
动态和修改ChooseService
构造采取指针:
Usuario* user = new Usuario;
user->usuario = "test";
user->senha = "*";
ChooseService cs(user);
//...
ChooseService(Usuario* user) {...}
你的具体情况,您的变种会的工作,因为这两个对象具有相同的寿命,但它在很危险长跑。
'&user'产生一个'Usuario *',但是你只会有一个悬挂指针... – ildjarn 2012-03-29 20:13:03