重名导致does not name a type
今天在Ubuntu24.04上编成时,makefile编译报错:
falsecolor.h:48:9: error: ‘FalseColor’ does not name a type48 | FalseColor* content ;| ^~~~~~~~~~
falsecolor.h的部分代码如下:
class FalseColor
{public:FalseColor(int w, int h){width = w;height = h;channels = 3;data = (uint8_t*)malloc(sizeof(uint8_t)*width*height*3);memset(data, '\0', (sizeof(uint8_t)*width*height*3));};~FalseColor(){if(data != NULL) Destroy();};// 销毁数据void Destroy(){free(data);data = NULL;}// 宽和高int width, height;// 通道数int channels;// 存储伪彩图像数据的数组uint8_t* data;
};// 链队列结构体类型
struct FalseColorNode
{FalseColor* content ;struct FalseColorNode* next ;
};
显然我是定义了类的,不存在没有定义
报错中有一个细节:
tasks.cpp: In function ‘void* FalseColor(void*)’
原来是之前写的一个函数和类FalseColor重名了,将函数改名后编译通过