- >必须指向类/结构/联合/泛型类型错误

问题描述:

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'必须具有类/结构/联合

+0

'arg'是用'无效*' - 你怎么能指望'arg-> fuente'工作? – ildjarn 2012-02-13 23:13:11

argvoid*指针,你不能没有第一投射回相应的类型得到什么呢:

ARGTHREAD* arg_values = static_cast<ARGTHREAD*>(arg); 
// use arg_values->... 

你的程序请求void*的元件,这不是一个类型(带部件)。首先将其转换为您通过的类型(ARGTHREAD),然后您可以将void*视为ARGTHREAD*