Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QString在传递给函数时清空_C++_Qt_Ubuntu_Qstring - Fatal编程技术网

C++ QString在传递给函数时清空

C++ QString在传递给函数时清空,c++,qt,ubuntu,qstring,C++,Qt,Ubuntu,Qstring,我有一个用QT编写的项目。 到目前为止,我在Windows中测试它没有问题。 今天我尝试将它移植到Linux 我从Qt.gitorius.org下载了Qt源代码树。目前它的版本是5.2.2。 它的编译和安装没有问题。 该程序也编译没有问题。 但在运行时出现了一个问题。 调试时,我发现了奇怪的行为。 简而言之: Config::Config() { p_path=QApplication::applicationDirPath(); 如果(!p_path.endsWith(QDir::separa

我有一个用QT编写的项目。 到目前为止,我在Windows中测试它没有问题。 今天我尝试将它移植到Linux

我从Qt.gitorius.org下载了Qt源代码树。目前它的版本是5.2.2。 它的编译和安装没有问题。 该程序也编译没有问题。 但在运行时出现了一个问题。 调试时,我发现了奇怪的行为。 简而言之:

Config::Config()
{
p_path=QApplication::applicationDirPath();
如果(!p_path.endsWith(QDir::separator())p_path+=QDir::separator();
QString path=p_path+“Settings/config.xml”;
settings=新设置(path,this);//这里的路径是/opt/myprog/settings/config.xml
}
设置::设置(常量QString文件,QObject*父项):QObject(父项)
{
p_file=file;//这里的文件是空的!!!!
p_初始化=假;
p_autosave=true;
p_changed=false;
}
当我将QString值传递给函数时,它将丢失其值

我在Windows中检查了相同的代码,它可以正常工作

我的系统:

  • Ubintu 13.10 64位
  • 通用条款4.8.1
  • Qt 5.2.2(吉特)

所显示的代码没有什么严重错误,只是希望向字符串传递常量引用,但这不是问题的原因。
设置
构造函数应具有以下签名:

Settings::Settings(const QString & file, QObject * parent)

您应该在项目上重新运行qmake,清理并重建它,然后重试。如果它仍然不能工作,那么你就有一个内存错误,而平台的改变只是在你的代码中暴露了一个潜在的错误。

我真的不明白我的项目是怎么回事。我的项目疯了。调试器显示错误的值,例如186个布尔值,它是用
true
初始化的。某些类valiables看起来已被删除,但它们是以前创建和初始化的。因此,当我试图得到它时,程序崩溃了;连接(cm,信号(AddAction(QAction*)),此,插槽(AddMenuAction(QAction*));我得到错误:没有这样的信号配置::AddWidgetSignal,但它不是配置实例,而是CoreManager。。。嗯,参考作品。但为什么按值传递在Windows上有效,而在Linux上无效?还有其他问题——看起来x86和x64的代码是混合的,但我已经仔细检查过了。Qt被编译为x64,但其中任何一个都应该工作。您还有其他错误,它们只是在代码中的这个位置出现,但它们是无关的。