error C2668: “QThread::start”: 对重载函数的调用不明确

proorck6 2012-10-25 02:35:11
#include <iostream>
#include <QThread>
#include <QString>

class MyThread : public QThread
{
Q_OBJECT
public:
MyThread(QString name = "") {
stopped = false;
this->name = name;
}

void run() {
while (!stopped) {
std::cout << "In " << name.toStdString() << "'s run()." << std::endl;
QThread::msleep(400);
}
}

void stop() {
stopped = true;
}

private:
volatile bool stopped;
QString name;
};

int main()
{
MyThread thread;
MyThread thread1("Thread1");
MyThread thread2("Thread2");
//
thread.start();
thread1.start();
thread2.start();
return 0;
}

哪里错了?望高手指点。
...全文
406 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
proorck6 2012-11-07
  • 打赏
  • 举报
回复
折腾了半天,原来是Qt版本问题,从4.8.3换成4.8.2就没问题了。
proorck6 2012-10-29
  • 打赏
  • 举报
回复
各位大牛,加了 Q_OBJECT 还是不行啊!
开发者说 2012-10-26
  • 打赏
  • 举报
回复
Q_OBJECT使用的类不要放到cpp中,要单独的.h文件,moc才能正确解析。
彩阳 2012-10-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

我把它们放在不同的文件中,还是不行啊!
具体的代码如下:
C/C++ code
#include <QCoreApplication>
#include <QThread>
#include "MyThread.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyThread th……
[/Quote]
你看,把Q_OBJECT都丢掉了。
proorck6 2012-10-26
  • 打赏
  • 举报
回复
还是那个C2668错误,我都晕了。
  • 打赏
  • 举报
回复
这个会编译不过?啥错误?
proorck6 2012-10-26
  • 打赏
  • 举报
回复
我把它们放在不同的文件中,还是不行啊!
具体的代码如下:
#include <QCoreApplication>
#include <QThread>
#include "MyThread.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyThread thread;
thread.start();
return a.exec();
}

#ifndef MYTHREAD_H
#define MYTHREAD_H

#include <QThread>

class MyThread:public QThread
{
protected:
void run();
};

#endif // MYTHREAD_H


#include "MyThread.h"
#include <stdio.h>

void MyThread::run()
{
while(1){
printf("A");
}
}
proorck6 2012-10-25
  • 打赏
  • 举报
回复
现在的问题是编译都通不过,一直报C2668错误。
jdwx 2012-10-25
  • 打赏
  • 举报
回复
还有,关键的没有等待线程结束,三个线程变量就被销毁了。
jdwx 2012-10-25
  • 打赏
  • 举报
回复
多写几个文件,把你的程序分成三个文件,main.cpp,mythread.h,mythread.cpp
还有mythread的构造函数,建议用QtCreator生成类(基于qobject),改一下(qobject => qthread)就可以用了。

16,906

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧