C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[55090] E2034 Cannot convert 'void *' to 'individual *'
만두박사 [minbaemandoo] 1234 읽음    2008-11-04 15:54
old_pop_ptr->ind_ptr = j;

      old_pop_ptr->ind_ptr = j1;

두 줄에서 E2034 Cannot convert 'void *' to 'individual *' 이란 Error가 뜨는데, 어떻게 손을 봐야 할런지요.

아래는 Source code 입니다.

/////////////////////////////////////////////////////////////////////////////////

void nselect(population *old_pop_ptr,population *pop2_ptr);

void nselect(population *old_pop_ptr,population *pop2_ptr)
{
  int *fit_ptr1,*fit_ptr2;

  float rnd2,*f1_ptr,*f2_ptr;
 
  int *s1_ptr,*s2_ptr,*select_ptr,*ptry;
  float *select_ptr_r, *s1_ptr_r, *s2_ptr_r;

  void *j, *j1;
 
  int c,i,rnd,rnd1,k,n,j2,r,s,r1;
 
  old_pop_ptr->ind_ptr = &(old_pop_ptr->ind[0]);
 
  pop2_ptr->ind_ptr = &(pop2_ptr->ind[0]);
 
  j =  &(old_pop_ptr->ind[popsize-1]);
 
  old_pop_ptr->ind_ptr = &(old_pop_ptr->ind[0]);
  j2 = 0;
  r = popsize;
  s = chrom;
 
  for(n=0,k=0;n<popsize;n++,k++)
    {
      pop2_ptr->ind_ptr = &(pop2_ptr->ind[k]);
      select_ptr = &(pop2_ptr->ind_ptr->genes[0]);
      select_ptr_r = &(pop2_ptr->ind_ptr->xreal[0]);

      rnd2 = randomperc();

      rnd2 = popsize* rnd2;

      rnd = floor(rnd2);

      if(rnd == 0)
    rnd = popsize - k;

      if(rnd == popsize)
    rnd = (popsize-2)/2;

      /*Select first parent randomly*/
      j = &(old_pop_ptr->ind[rnd-1]);

      rnd2 = randomperc();

      rnd2 = popsize * rnd2;

      rnd1 = floor(rnd2);

      if (rnd1 == 0)
    rnd1 = popsize - n;

      if(rnd1 == popsize)
    rnd1 = (popsize - 4)/2;


      /*Select second parent randomly*/
      j1 = &(old_pop_ptr->ind[rnd1-1]);

      old_pop_ptr->ind_ptr = j;        // E2034 Error

      s1_ptr = &(old_pop_ptr->ind_ptr->genes[0]);
      s1_ptr_r = &(old_pop_ptr->ind_ptr->xreal[0]);
      fit_ptr1 = &(old_pop_ptr->ind_ptr->rank);
      f1_ptr = &(old_pop_ptr->ind_ptr->cub_len);

      old_pop_ptr->ind_ptr = j1;      // E2034 Error
      s2_ptr = &(old_pop_ptr->ind_ptr->genes[0]);
      s2_ptr_r = &(old_pop_ptr->ind_ptr->xreal[0]);
      fit_ptr2 = &(old_pop_ptr->ind_ptr->rank);
      f2_ptr = &(old_pop_ptr->ind_ptr->cub_len);
/*--------------------------------------------------------------------------*/

/*------------------SELECTION PROCEDURE------------------------------------*/

      /*Comparing the fitnesses*/

      if(*fit_ptr1 > *fit_ptr2)
    {
      for(i = 0;i < chrom;i++)
        *select_ptr++=*s2_ptr++;
      for(i = 0;i < nvar;i++)
        *select_ptr_r++=*s2_ptr_r++;
    }
      else
    {
      if(*fit_ptr1 < *fit_ptr2)
        {
          for(i = 0;i < chrom;i++)
        *select_ptr++=*s1_ptr++;
          for(i = 0;i < nvar;i++)
        *select_ptr_r++=*s1_ptr_r++;
        }
      else
        {
          if(*f1_ptr < *f2_ptr)
        {
          for(i = 0;i < chrom;i++)
            *select_ptr++=*s2_ptr++;
          for(i = 0;i < nvar;i++)
            *select_ptr_r++=*s2_ptr_r++;
        }
          else
        {
          for(i = 0;i < chrom;i++)
            *select_ptr++=*s1_ptr++;
          for(i = 0;i < nvar;i++)
            *select_ptr_r++=*s1_ptr_r++;
        }
        }
    }
    }
  return;
}

+ -

관련 글 리스트
55090 E2034 Cannot convert 'void *' to 'individual *' 만두박사 1234 2008/11/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.