0

我正在尝试使用 C++ 在 eclipse 中编写 Qt 程序,但我无法克服错误:

void MyTests::populateFirstList(){
    Question* q = new Question;
    q = this->ctr->getCurrent();
    string s = this->ctr->toString(q);
}

Question 是我定义的类型,带有 toString(q) 的行返回一个错误,说明参数无效。toString() 函数:

string Controller::toString(Question* q){
    string s="";
    string text = q->getText();
    char c;
    string::iterator it;
    for (it= text.begin(); it != text.end(); it++)
    {
        if ((*it) == ' ') {
            s+="\n";
        }
        else {
            s+=it;
        }
    }
    return s;
}

为了安全起见,getCurrent() 函数:

Question* Controller::getCurrent(){
    return this->question;
}

我不明白为什么会发生这种情况,因为函数 toString() 应该接受一个指向问题的指针,而 q 是一。我什至不确定错误是在这些函数中还是在更深的地方引起的。谢谢你的帮助。

错误信息是:

invalid arguments ' Candidates are:
    std::basic_string < char,std::char_traits < char >, std::allocator < char > >
      toString(Question *) '
4

2 回答 2

1

执行:运行 QMake 然后构建 :)

于 2016-11-10T12:12:27.217 回答
0

最终你的错误来自线路

        } else s+=it;

最终应该是

        } else s+=*it;

这可能无法解决问题,但我在这里看不到任何 QT。为什么在编写 Qt-App 时不使用 QT-Objects?

void MyTests::populateFirstList(){
    Question* q = this->ctr->getCurrent();
    QString s = this->ctr->toString(q);
}


QString Controller::toString(Question* q){
    QString s;
    QString text = q->getText();
    s = text.replace(" ","\\n");
    return s;
}


Question* Controller::getCurrent(){
    return this->question;
}
于 2013-06-28T12:10:39.847 回答