|
정렬 님이 쓰신 글 :
: 우선 소스 부터 올리면..
:
: #include<iostream>
: using namespace std;
:
: const int MAX=10;
:
: class quick{
:
: int data[MAX];
:
: public:
:
: void show();
: void input();
: void sort(int data[],int n);
: };
:
:
: void quick::show(){
:
: cout<<"\n---- data ----\n";
: for(int i=0;i<MAX;i++)
: cout<<data[i]<<" ";
: }
:
: void quick::input(){
:
: for(int i=0;i<MAX;i++)
: {
: cout<<"input "<<i+1<<" sd data :";
: cin>>data[i];
: }
: }
:
: void quick::sort(int data[],int n){
:
: int v,t;
: int i,j;
:
: if(n>1)
: {
: v=data[n-1] ;
: i=-1;
: j=n-1;
:
: while(1)
: {
: while(data[++i]<v)
: while(data[--j]>v)
: if (i>j) break;
: t=data[i];
: data[i]=data[j];
: data[j]=t;
: }
:
: t=data[i];
: data[i]=data[n-1];
: data[n-1]=t;
: sort(data,i);
: sort(data+i,n-i-1);
: }
: }
:
:
: int main(){
:
: quick no1;
:
: no1.input();
: no1.show();
: no1.sort(data,MAX);
: no1.show();
:
: return 0;
: }
:
:
: 이런데요... 당연한 이야기이겠지만... 컴파일시 애러가 납니다. 애러가 나는 부분은
:
: no1.sort(data,MAX) 이부분에서 애러가 나는데요.. data 배열이 클래스 내에 정의가 되 있고
:
: main() 함수에는 없기때문에 data 가 정의 되지 않았다는 애러가 나옵니다.
:
: 그래서 c++ 에서 매서드 함수를 이용하여 재귀함수를 어떻게 사용해야하는지 잘 모르겠습니다.
:
: 꼭 도움 부탁드립니다.
:
:
Class로 구현하신다고 보면 아마도 조금은 더 생각을 해 보셔야 할 듯..
Class는 우선 자신의 Data를 캡슐화 하는데 있으니까 Data를 외부에서 가져올때
필요한 Interface를 만들어야 겠죠..
아마도 sortClass.input.Add( "input" ) 이런 식으로 말이죠.
아니면 넣을때 주소를 넣는다던지 하는 식으로 말이죠.
data 자체까지 캡슐화 하려면 이런 식으로 해야 할 것입니다.
그러니까 sortClass에 Data를 차근 차근 넣던지 배열의 주소를 넣어서
Data를 Class에 넣으시구요 sortClass에 sort 메소드를 만든 다음에
출력은 반대로 Data를 차근 차근 빼던지 아니면 주소를 반환하던지
그런식으로 코딩 하셔야 할 겁니다.
|