gpt4 book ai didi

c++ - 非法使用此类型作为表达式(错误)C++

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:56 25 4
gpt4 key购买 nike

我添加到我的 VC++ 2010 项目的最新文件突然给我关于数据类型的错误。经过一番搜索后,这个错误似乎在 C 代码中很常见,但我使用的是 C++(是的,我的文件扩展名是正确的)。我的 BUFFER 类在我的所有其他文件中仍然可以正常工作,如果我将它们注释掉,它也会抛出与 Windows UINT 类型相同的错误。

顺便说一句,这是来自“DRONEPOOL.h”

我的代码:

//#include <winsock2.h>
//#include <ws2tcpip.h>
#include <Windows.h>
#include "BUFFER.h"

#ifndef __DRONEPOOL_H__
#define __DRONEPOOL_H__

#define DRONE_POOL_SIZE 100

#define DRONESTATE_EMPTY 0
#define DRONESTATE_IDLE 1
#define DRONESTATE_WORKING 2
#define DRONESTATE_PICKUP 3 // work result ready for pickup

#define LPCLIENTCONNECTION CLIENTCONNECTION*
struct CLIENTCONNECTION
{
// SOCKET skSocket;
WORD wState;
};


#define LPDRONEPOOL DRONEPOOL*
class DRONEPOOL
{
pritave:
BUFFER bfTaskBuffer;
BUFFER bfResultBuffer;
CLIENTCONNECTION ccPool[DRONE_POOL_SIZE];
UINT iPoolHead;
UINT iPoolTail;
HANDLE hPoolMutex;
HANDLE hManagerThread;
static DWORD WINAPI Manager(__in LPVOID);
public:
DRONEPOOL();
~DRONEPOOL();
BOOL InsertDrone(SOCKET);
BOOL AssignTask(LPXMSG);
BOOL PeekResult(LPXMSG);
BOOL GetResult(LPXMSG);
};

#endif

错误是:ERROR C2275: 'BUFFER' : Illegal use of this type as expression

知道如何解决这个问题吗?

最佳答案

很可能拼写错误的 private 会在下一行声明您的 BUFFER bfTaskBuffer 时混淆编译器。

编辑:还有一些关于代码和风格的评论:

  • 双下划线在任何上下文中都是保留的,前导下划线是某些上下文(后跟大写字母或在全局命名空间中,可能还有其他上下文)。只需使用 DRONEPOOL_H
  • 通常所有大写都是为常量保留的。考虑使用 DRONEPOOL 而不是 DRONEPOOL
  • 不使用 #define 作为指针别名,而是使用 typedef:类定义之后执行 typedef DRONEPOOL* LPDRONEPOOL; 这会创建一个键入别名,而不是文本替换。

关于c++ - 非法使用此类型作为表达式(错误)C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820641/

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