改變時崩潰這裏是我的腳本:QT試圖將一個字符串從一個類
void FileOperations::SetInputFile(QString x){
InputFilename=x.toStdString();
}
void FileOperations::SetOutputFile(QString x){
OutputFilename=x.toStdString();
}
第一個(SetInputFile)試圖查找inputfilename設置爲x時崩潰。 第二個工作正常。
下面是我從改變這兩個字符串類:
class FileOperations
{
public:
void SetInputFile(QString x);
void SetOutputFile(QString x);
private:
string InputFilename;
string OutputFilename;
};
正如你所看到的,「查找inputfilename」和「OutputFilename」是相同的,它們的功能幾乎是相同的也。 我嘗試將字符串更改爲不同的名稱,但它仍然崩潰。
後崩潰我可以按調試,並查看在Microsoft Visual Studio 2010中的錯誤,這裏是崩潰信息:
msvcr100d.dll的operator delete(void *的pUserData)線52個+ 0x3字節C++ ShitLEncoder.exe!std :: allocator :: deallocate(char * _Ptr,unsigned int __formal)Line 182 + 0x9 bytes C++ ShitLEncoder.exe!std :: basic_string,std :: allocator> :: _ Tidy(bool _Built, unsigned int _Newsize)Line 1998 C++ ShitLEncoder.exe!std :: basic_string,std :: allocator> :: assign(std :: basic_string,std :: allocator> & & _Right)Line 722 C++ ShitLEncoder.exe!std :: basic_string,std :: allocator> :: operator =(std :: basic_string,std :: allocator> & & _Right)Line 710 C++ ShitLEncoder.exe!FileOperations :: SetInputFile(QString x) Line 8 + 0x26 bytes C++ ShitLEncoder.exe!MainWindow :: on_OpenButton_clicked()Line 20 C++ ShitLEncoder.exe!MainWindow :: qt_static_metacall(QObject * _o,QMetaObject :: Call _c,int _id,void * * _a)第72行+ 0x8 bytes C++ Qt5Cored.dll!615820e0()
[下面的幀可能是不正確的和/或丟失,沒有爲Qt5Cored.dll加載的符號]
Qt5Cored.dll!615c6 13F()
Qt5Cored.dll!615c5ac1()
Qt5Widgetsd.dll!66a7118b()
Qt5Widgetsd.dll!66727087()
Qt5Widgetsd.dll!6672703b()
Qt5Widgetsd.dll!66728092()
Qt5Widgetsd.dll!66629ef5()
Qt5Widgetsd.dll!66624c40()
Qt5Widgetsd.dll!665e0887()
Qt5Widgetsd.dll!66625405()
Qt5Widgetsd.dll!6665de30()
Qt5Widgetsd.dll!665f15a0 ()! Qt5Widgetsd.dll 665e0253()
msvcr100d.dll _free_dbg(void *的pUserData,詮釋nBlockUse)線1267個+位於0xC字節C++ 0246b188()
它顯示了在代碼的第一件事是:
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
我在QT Creator中使用QT 5。
[編輯] 這裏是QT的主窗口類使用調用這些函數的代碼:
void MainWindow::on_OpenButton_clicked()
{
ui->OpenText->setText(QFileDialog::getOpenFileName(this, tr("Open File"),"",tr("Any file")));
FileController->SetInputFile(ui->OpenText->text());
}
void MainWindow::on_SaveButton_clicked()
{
ui->SaveText->setText(QFileDialog::getSaveFileName(this, tr("Save File"),"",tr("Any file")));
FileController->SetOutputFile(ui->SaveText->text());
}
FileOperations是否在通過INCLUDEPATH找到的mainwindow之外的另一個文件夾中? –
FileOperations是一個單獨的類,但它不在單獨的文件夾中。 – killerloader