2013-10-08 5 views
0

>> 연산자를 오버로드하여 배열의 요소를 회전하려고합니다. 배열 선언을 제거하고 코드를 줄이기 위해 초기화를 제거했습니다. 그러나 컴파일러는 "정의되지 않은 유형 '클래스 ABC'의 유효하지 않은 사용으로 오류가 발생합니다." 그리고 더 많은.배열을 매개 변수화 된 생성자에서 인수로 전달

#include<iostream> 
using namespace std; 
class ABC 
{ 
     int iarr[10],n2,n3; 
     char carr[10]; 

     Public: 
      ABC(); 
     ABC(int arr[],char car[],int n,int n1) 
     { 
       n2=n; n3=n1; 
       for(int i=0;i<n;i++) 
       iarr[i]=arr[i]; 
       for(int i=0;i<n1;i++) 
         carr[i]=car[i]; 
     } 

     ABC operator>>(int n) 
     { 
      while(n) 
      { 
        int temp; 
        temp=iarr[n2-1]; 
        for(int i=n2-1;i>=0;i--) 
        { 
         iarr[i]=iarr[i-1]; 
        } 
        iarr[0]=temp; 
      } 
     } 

     void display() 
     { 
      for(int i=0;i<n2;i++) 
       printf("%d\t",iarr[i]); 
      printf("\n"); 
      for(int i=0;i<n3;i++) 
       printf("%d\t",carr[i]); 
     } 
}; 

main() 
{ 
    ABC A; 
    A=ABC(arr,car,n,n1); 
    A.display(); 
} 
+0

적절한 방법 필요 ; A = ABC (...); '기본 ctor와 대입 연산자가 필요합니다. – dyp

+0

''n '을'연산자''안에서 수정하지 않으므로이 루프'while (n)'은 전혀 실행되지 않거나 무한히 실행됩니다. – dyp

답변

2

귀하의 오류 "정의되지 않은 유형의 잘못된 사용은 '클래스 ABC'"때문에 기본 생성자이다. 기본 생성자를 선언했지만 정의하지 않았습니다. `당신이 쓰는 경우`ABC 대신 ABC();

당신은 ABC A (편곡, 카, N, N1)`이 아닌 기본의 ctor되어 사용 요소를 구성이어야 할 ABC() {}

+0

약 45 분을 낭비한 후 ... 휴! 'P'는 '대중'에서 자본이되어서는 안됩니다. 그러나 컴파일러는이 오류를주지 않았습니다. 나머지 코드는 while 루프에서 'n--'을 제외하고 올바른 것입니다. – Maverick

관련 문제