我不知道为什么我会收到这个错误,因为它在一小时前编译得很完美,我在这里没有做任何改动.
我有一个名为SocketsStatus的类,然后我有许多线程,每个线程实现一个套接字连接.所以我传递了一个对SocketsStatus对象的引用来控制哪些是连接的,哪些不是.
套接字状态标题:
#ifndef SOCKETSSTATUS_H_
#define SOCKETSSTATUS_H_
#include <QMutex>
#include <BufferDatos.h>
class SocketsStatus {
public:
SocketsStatus();
int setBufferStatus(int bufferId, bool status);
bool isEveryBufferDisconnected();
virtual ~SocketsStatus();
private:
void init();
bool bufferRawMeasConnected;
bool bufferPosConnected;
bool bufferRtkConnected;
QMutex *mutex;
};
#endif /* SOCKETSSTATUS_H_ */
Run Code Online (Sandbox Code Playgroud)
然后,BufferDatos的标头的开头,这是我的Thread类:
#ifndef BUFFERDATOS_H_
#define BUFFERDATOS_H_
#include <QThread>
#include <QTcpSocket>
#include <SocketsStatus.h>
#include "Global.h"
class BufferDatos: public QThread {
public:
BufferDatos(QString ip, qint16 port, SocketsStatus &buffersStatusPassed);
virtual QByteArray extraerSiguienteMensaje(void) = 0;
virtual ~BufferDatos();
protected:
void run(void);
bool connect(void);
void receiveData(void);
bool reconnect(int &timeoutsWithOpenSocket);
protected:
QTcpSocket *tcpSocket;
QString ip;
qint16 port;
SocketsStatus &buffersStatus;
//...
Run Code Online (Sandbox Code Playgroud)
我收到错误:'SocketsStatus'尚未在ctr中声明,然后在将变量声明为protected时我也收到错误:'SocketsStatus'没有命名类型.
一定是一些愚蠢的细节,但我没碰巧看到哪里!有帮助吗?
你有一个#include循环依赖.每个标题都尝试包含另一个标题.是否SocketsStatus真的需要了解BufferDatos?您需要删除两个中#include的一个,您可以使用前向声明替换其中一个.
| 归档时间: |
|
| 查看次数: |
2111 次 |
| 最近记录: |