【发布时间】:2015-07-15 06:38:20
【问题描述】:
我想访问从Dialog Window 到Main Window 的Qstring (m_IPAdd)。但是,我被困在在 setter 函数中传递 Qstring 值。
调试模式时我的错误显示为弹出窗口:
unhandled exception occurs at 0x66a77448 (Qt5Cored.dll) in __.exe:0xC0000005:
conflict happend when accessing the memory at 0xffffffffffffffff"
(我正在使用带有 Qt5.0 的 MSVC2010。)
对话窗口:
private:
MainWindow *mainwindow;
...
mainwindow->setIPAdd(m_IPAdd); //m_IPAdd: member variable of class DialogWindow
主窗口:
private:
QString m_ip;
...
void MainWindow::setIPAdd(const QString ip)
{
m_ip = ip ;
}
我也试过了
void MainWindow::setIPAdd(const QString ip)
{
QString ipadd = ip; //ipadd: local variable which it can get the value of Qstring (in Debug mode)
m_ip = ipadd ; //here's the program crashes, m_ip can't get any value
}
我想知道为什么局部变量ipadd 可以得到通过参数ip 传递的值,而不是m_ip。我什至尝试过分配
m_ip = "abc";
但程序也失败了。
我已经阅读了 qt web 中的文档,但仍然不知道哪一部分对我有用。
请给我任何指导和建议。非常感谢!!
【问题讨论】:
-
你得到什么错误?
-
1.包含 m_ip 的对象是否已正确实例化?
-
你的调试器说什么?我猜
MainWindow实例已经不存在了。 -
打赌指向
MainWindow(又名mainwindow)的指针未初始化 -
@MarkoFrelih, @cmannett85 :谢谢,更新了错误。 @borisbn:您的意思是在
Dialog Window的构造函数中初始化指向MainWindow的指针吗? @AlexanderVX:这是否意味着我需要新建一个 QString 对象?