我在C ++中使用Visual Studio 2008 Professional和Windows Form,我有一个类,我必须传递给另一个Form,所以这就是我正在做的事情
// FirstFile.cpp
Usuario user;
user.usuario = "test";
user.senha = "stackoverflow";
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 *”中,这样我就可以使用“this”进入课堂,这是我无法做到的。
Usuario usuario;
而不是指针,因为Windows窗体不允许你,你必须使用指针。那怎么办呢?有什么诀窍吗? 我希望我很清楚,谢谢!
答案 0 :(得分:1)
从对象获取指针很简单:
Usuario user;
Usuario* pUser = &user;
但它可能会使指针无效,因为user
处于自动存储状态,并且在您使用pUser
之前可能会被销毁。
我建议您动态分配user
并修改ChooseService
的构造函数以获取指针:
Usuario* user = new Usuario;
user->usuario = "test";
user->senha = "stackoverflow";
ChooseService cs(user);
//...
ChooseService(Usuario* user) {...}
在您的特定情况下,您的变体将起作用,因为两个对象具有相同的生命周期,但从长远来看它是危险的。
答案 1 :(得分:0)
你不会施展,你只需要拿地址