Qt的;没有匹配的呼叫功能

时间:2014-04-29 21:24:41

标签: c++ qt

在Qt项目中获取此错误;

C:\Users\Seb\Desktop\SDIcw2\shipHandler.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上的一个问题,它带来了另一个问题。真的很生气,我讨厌在这里张贴很多东西。只是试图传递文件名打开,在视觉工作室工作,但移动到这里添加gui。非常感谢帮助

1 个答案:

答案 0 :(得分:1)

转换为QString只会导致问题。 如果您直接使用fileName,则应解决编译器错误:

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