gpt4 book ai didi

c++ - 错误 : CLASS_NAME has not been declared/does not name a type (c++)

转载 作者:太空宇宙 更新时间:2023-11-04 15:49:32 25 4
gpt4 key购买 nike

我不知道为什么会出现这个错误,因为它在一小时前编译完美而且我没有在这里做任何更改。

我有一个名为 SocketsStatus 的类,然后我有许多线程,每个线程实现一个套接字连接。因此,我将传递对 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_ */

然后,BufferDatos 的 header 开始,这是我的 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;
//...

我收到error: 'SocketsStatus' has not been declared at the ctr, and then declaring the variable as protected 我也收到error: 'SocketsStatus' does not name a类型

一定是一些愚蠢的细节,但我没有碰巧看到在哪里!有帮助吗?

最佳答案

你有一个#include 循环依赖。您的每个 header 都试图包含另一个 header 。 SocketsStatus 真的需要了解 BufferDatos 吗?您需要删除两个 #include 之一,您可以将其中一个替换为前向声明。

关于c++ - 错误 : CLASS_NAME has not been declared/does not name a type (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com