• 7839阅读
  • 5回复

一个类包含了一个头文件,那么类中不能使用头文件中定义的结构体吗?? [复制链接]

上一主题 下一主题
离线huyaowu
 

只看楼主 倒序阅读 楼主  发表于: 2010-09-07
— 本帖被 XChinux 执行加亮操作(2010-09-07) —
有个myThread类:
  1. #ifndef MYTHREAD_H
  2. #define MYTHREAD_H
  3. #include <QThread>
  4. #include "testthread.h"
  5. class myThread : public QThread
  6. {
  7.  Q_OBJECT
  8. public:
  9.  myThread(QObject *parent);
  10.  ~myThread();
  11.  
  12.  void run();
  13.  
  14. };
  15. #endif // MYTHREAD_H


包含了头文件testthread.h:
  1. #ifndef TESTTHREAD_H
  2. #define TESTTHREAD_H
  3. #include <QtGui/QMainWindow>
  4. #include "ui_testthread.h"
  5. #include "mythread.h"
  6. typedef struct tagINFO
  7. {
  8.  QString name;
  9.  int age;
  10.  QString company;
  11. }INFO;
  12. class testthread : public QMainWindow
  13. {
  14.  Q_OBJECT
  15. public:
  16.  testthread(QWidget *parent = 0, Qt::WFlags flags = 0);
  17.  ~testthread();
  18. private:
  19.  Ui::testthreadClass ui;
  20. };
  21. #endif // TESTTHREAD_H


我在myThread.h中不能用INFO这个结构体吗?
现在我只要在myThread.h中定义一个INFO的变量就提示出错啊?


离线dbzhang800

只看该作者 1楼 发表于: 2010-09-07
出错就简单扼要贴一下出错信息。

题外,C中的这种 typedef 定义别名的 写法在C++真显得别扭。
离线xinqingfly

只看该作者 2楼 发表于: 2010-09-07
你的头文件互相包含了,把INFO放到myThread中定义,把#include "testthread.h"去掉
菜鸟也是鸟
离线huyaowu

只看该作者 3楼 发表于: 2010-09-07
引用第2楼xinqingfly于2010-09-07 10:26发表的  :
你的头文件互相包含了,把INFO放到myThread中定义,把#include "testthread.h"去掉

但是在testthread中我也要用到这个结构的啊
离线huyaowu

只看该作者 4楼 发表于: 2010-09-07
引用第1楼dbzhang800于2010-09-07 10:25发表的  :
出错就简单扼要贴一下出错信息。
题外,C中的这种 typedef 定义别名的 写法在C++真显得别扭。


错误信息:
1>moc_testthread.cpp
1>d:\qttest\testthread\testthread\mythread.h(16) : error C2146: 语法错误 : 缺少“;”(在标识符“info”的前面)
1>d:\qttest\testthread\testthread\mythread.h(16) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\qttest\testthread\testthread\mythread.h(16) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
离线huyaowu

只看该作者 5楼 发表于: 2010-09-07
回 2楼(xinqingfly) 的帖子
我把INFO定义放在myThread中,然后myThread中去掉#include "testthread.h"
这样就好了。。
testthread中也能用INFO了。。
快速回复
限100 字节
 
上一个 下一个