- >必须指向类/结构/联合/泛型类型错误
问题描述:
typedef struct{
IMAGE *fuente;
IMAGE *destino;
int saltos;
} ARGTHREAD;
ARGTHREAD values;
DWORD WINAPI ProcessThread(LPVOID arg){
int i,j,imageRows,imageCols,C,R;
PIXEL *pfte,*pdst;
PIXEL *v0,*v1,*v2,*v3,*v4,*v5,*v6,*v7;
//memcpy(arg->destino, arg->fuente,sizeof(IMAGE)-sizeof(PIXEL *));
imageRows = arg->fuente->infoheader.rows;//error here ->
imageCols = arg->fuente->infoheader.cols;//error here ->
//arg->destino->pixel=(PIXEL *)malloc(sizeof(PIXEL)*imageRows*imageCols);
i=arg->saltos;//error here ->
R=imageRows-1;
C=imageCols-1;
while(i<R){
j=1;
while(j<C){
pfte=arg->fuente->pixel+imageCols*i+j;//error here ->
v0=pfte-imageCols-1;
v1=pfte-imageCols;
v2=pfte-imageCols+1;
v3=pfte-1;
v4=pfte+1;
v5=pfte+imageCols-1;
v6=pfte+imageCols;
v7=pfte+imageCols+1;
pdst=arg->destino->pixel+imageCols*i+j;//error here ->
if(abs(blackandwhite(*pfte)-blackandwhite(*v0))>DIF ||
abs(blackandwhite(*pfte)-blackandwhite(*v1))>DIF ||
abs(blackandwhite(*pfte)-blackandwhite(*v2))>DIF ||
abs(blackandwhite(*pfte)-blackandwhite(*v3))>DIF ||
abs(blackandwhite(*pfte)-blackandwhite(*v4))>DIF ||
abs(blackandwhite(*pfte)-blackandwhite(*v5))>DIF ||
abs(blackandwhite(*pfte)-blackandwhite(*v6))>DIF ||
abs(blackandwhite(*pfte)-blackandwhite(*v7))>DIF){
pdst->red=0;
pdst->green=0;
pdst->blue=0;
}
else{
pdst->red=255;
pdst->green=255;
pdst->blue=255;
}
j++;
}
i = i+numProc;
}
}
这是我如何创建我的胎面:- >必须指向类/结构/联合/泛型类型错误
MyThread的=的CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)ProcessThread ,& values,0,NULL);
我得到了很多这些错误,我不知道为什么?
错误8错误C2228:左“.cols'必须具有类/结构/联合
答
arg
是void*
指针,你不能没有第一投射回相应的类型得到什么呢:
ARGTHREAD* arg_values = static_cast<ARGTHREAD*>(arg);
// use arg_values->...
答
你的程序请求void*
的元件,这不是一个类型(带部件)。首先将其转换为您通过的类型(ARGTHREAD
),然后您可以将void*
视为ARGTHREAD*
。
'arg'是用'无效*' - 你怎么能指望'arg-> fuente'工作? – ildjarn 2012-02-13 23:13:11