Qt;没有用于调用的匹配函数

Qt; no matching function for call

本文关键字:函数 调用 用于 Qt      更新时间:2023-10-16

在Qt项目中获取此错误;

C:UsersSebDesktopSDIcw2shipHandler.cpp:20: error: no matching function for call to 'std::basic_ifstream<char>::open(QString&)'
     infile.open(qstr);
                     ^

发生在这个构造函数中;

SDI::shipHandler::shipHandler(std::string fileName)
{
    QString qstr = QString::fromStdString(fileName.c_str());
    std::string line;
    std::ifstream infile;
    infile.open(qstr);
    while(!infile.eof()) 
    {
        getline(infile,line); 
        shipHandler::lineParse(line);
    }
    infile.close();
}

我正在另一个线程中创建初始化类;

SDI::shipHandler sh("ships.txt");

只是解决了Qt上的一个问题,它带来了另一个问题。真的很生气,我讨厌在这里发很多帖子。简单地尝试将文件名传递到打开,在visualstudio中工作,但移动到这里添加gui。非常感谢您的帮助

转换为QString只会给您带来问题。如果只直接使用fileName,编译器错误应该得到解决:

SDI::shipHandler::shipHandler(std::string fileName)
{
    std::string line;
    std::ifstream infile;
    infile.open(fileName);
    ...