非法使用此类型作为表达式(错误)c++
illegal use of this type as expression (error) C++
我最近添加到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':非法使用此类型作为表达式
你知道怎么解决这个问题吗?
很可能拼写错误的private
会混淆下一行声明BUFFER bfTaskBuffer
的编译器。
编辑:还有一些关于代码和样式的注释:
- 双下划线在任何上下文中都是保留的,而前导下划线是在某些上下文中(后面跟着大写字母或在全局命名空间中,可能还有其他)。就用
DRONEPOOL_H
吧。 - 通常所有的大写字母都保留给常量。考虑
Dronepool
代替DRONEPOOL
。 - 不使用
#define
作为指针别名,使用typedef: 在类定义之后执行typedef DRONEPOOL* LPDRONEPOOL;
,它创建类型别名,而不是文本替换。
相关文章:
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++ 标记之前预期主表达式'('错误
- 正则表达式中带有卷轴大括号的正则表达式错误
- C++初学者错误:主要表达式错误
- 代数树表达式C++错误:未解析的外部符号"Public:_thiscall AlgebraicTreeExpression::~AlgebraicTreeExpression(void) ..."
- 使用多线程处理对象数组 - 无效使用 void 表达式错误
- 为什么 if constexpr 不会使这个核心常量表达式错误消失?
- 提升正则表达式错误:未初始化的提升::match_results
- C++比较表达式错误
- C++ "主表达式"错误
- C++ 正则表达式错误(未处理的异常)
- 'this'不能用于常量表达式错误 (C++)
- 代码块引发有关for_each的预期主表达式错误
- Boost Regex中的命名子表达式错误
- C++之前的主要表达式错误
- Ubuntu 上的正则表达式错误
- C++正则表达式错误
- 理解常量表达式错误
- 成员函数和预期的主表达式错误
- Xcode中应有表达式错误