2012-10-29 2 views
1

이 클래스와 구조체가 있고 배열의 모든 구조체가 다른 구조체 (배열의 모든 요소에 연결된 목록 구조체)에 연결되어 있습니다. btw 이것은 내 샘플입니다. 코드는 다른 오류가없는 가정 .. 생성자에서구조체의 배열이 작동하지 않는 것 같습니다.

class DATA; 
class myclass 
{ 
    public: 
     myclass(); 

     mystruct* addDATA(DATA *d); 

    private: 
     mystruct* array; 
}; 
struct mystruct 
{ 
    DATA  * data; 
    mystruct * next ; 

}; 

을 나는,이

mystruct::mystruct() 
{ 
    mystruct* array = new mystruct[10]; 
    for(int i = 0; i < 10; i++) 
     array[i] = NULL; 
} 

이 예기치 않은 (적어도 나에게) 오류를 제공하려하지 조금이 오류가 말도 안돼, NULL 포인터를 가리키고 있습니다.

no match for ‘operator=’ in ‘*(array + ((unsigned int)(((unsigned int)i) * 8u))) = 0’ 

또한 시도 할 때;

while(this->array[i] != NULL){ 
    // do some arrangements on the array.. 

} 

이 같은 오류를 제공 .. 왜 보내고 *이 오류를 제공 NULL로 포인터를 일치, 또는 아침부터 그것의 NULL 또는 not..Struggling이하는 *을 찾을 수없는 경우 확인하는 것 해결책 :/ 배열 유형이 "mystruct"이지만 그 밖의 것은 없습니다. 이것이 문제입니까? 아니면 array [i]가 포인터가 아니겠습니까?

+0

값의 배열을 가지고 있고이 값을 포인터로 처리하려고 시도하는 이유는 무엇입니까? 당신의 목표는 무엇입니까? – ildjarn

+0

어떻게이 문제를 해결할 수 있을까요?이 구조체 유형과 클래스를 사용하여 NULL인지 아닌지 확인해야합니다. – Karavana

+1

포인터 만 null 일 수 있습니다. 'mystruct'를 null로 비교한다는 것은 무엇을 의미합니까? – ildjarn

답변

2

아니요. 포인터의 배열을 작성하는 것은 아닙니다. 여러분은 구조체의 배열을 만들고 있습니다. array의 각 요소는 mystruct이 아니며 mystruct*이 아닙니다. mystruct을 null로 설정하는 것은 의미가 없습니다.

2

mystruct에 대한 포인터 배열이 아닌 mystructs의 배열이 있습니다. 포인터의 배열을 원한다면 다음과 같이 할당하십시오.

mystruct** array = new mystruct*[10]; 
관련 문제