2014-04-29 1 views
0

클래스 내부의 구조로 작업하는 방법을 모르겠습니다. 나는 첫번째 부분이 맞다고 생각하지만, 주된 부분에는 아무것도 없다. 나는 그것이 말하는 내 프로그램을 실행하려고하면 "함수가 0 인수를 고려하지 않습니다"이 같은 주에 모든 것을 작성해야 :개인 내부의 구조

P.Read(BOX m); 

여기까지 아래 내 코드입니다 :

#include <iostream> 
#include <string> 
using namespace std; 
template <class T, int n> 
class SIX 
{ 
private: 
    struct BOX 
    { 
     T a[n]; 
     string name; 
    }; 
public: 
    void Read(BOX m) 
    { 
     cout<<"Enter your name: "; 
     cin>>m.name; 
     cout<<m.name<<" please enter "<<n<<" data: "; 
     for(int i=0;i<n;++i) 
      cin>>m.a[i]; 
    } 
    void SortArray(BOX m) 
    { 
     sort(m.a, m.a+n); 
    } 
    void Display(BOX m) 
    { 
     cout<<m.name<<" this is the sorted list of data in your array a: "; 
     for(int i=0;i<n;++i) 
      cout<<m.a[i]<<'\t'; 
     cout<<endl; 
    } 
}; 
int main() 
{ 
    SIX <int, 6> P; 
    SIX <string, 5> Q; 

    P.Read(); 
    P.SortArray(); 
    P.Display(); 
    cout<<endl; 

    Q.Read(); 
    Q.SortArray(); 
    Q.Display(); 
    cout<<endl; 

    system("pause"); 
    return 0; 
} 

답변

0

아니, 멤버 함수입니다 Read

void Read() 
{ 
    cout<<"Enter your name: "; 
    cin>>BOX.name; 
    cout<<BOX.name<<" please enter "<<n<<" data: "; 
    for(int i=0;i<n;++i) 
     cin>>BOX.a[i]; 
} 

Read

로 정의하고, 그것이 당신이해야 할 모든 그래서 그것은 Box에 액세스 할 수 있습니다. 다른 함수와 동일하게 으로 바꾸고 코드 내에 mBOX으로 바꿔 코드로 BOX m을 지정할 필요가 없습니다.

@Barmar가 지적했듯이 struct BOX은 유형을 정의하기 만하면 BOX이라는 멤버 변수를 정의해야합니다. 그것을 할 수있는 가장 간단한 방법은이 구조 유형의 단지

struct 
{ 
    T a[n]; 
    string name; 
} BOX; 
+0

는'BOX' 변수 아닌, struct 선언의 끝으로 BOX를 이동하는 것입니다. – Barmar

+0

오, 네가 맞아,하지만 그걸 멤버 변수로 만들어야 해. 나는 그것을 빨리 읽고 변수를 정의했다는 것을 먼저 생각했다. 실제로 변수를 클래스 외부에서 사용하지 않았기 때문이다. – vsoftco

+0

이 내가 그에게로 클래스 템플릿 멤버 함수 '무효 SIX :: SortArray (무효)' 를 컴파일하는 동안 발견되지 "종류"식별자를 실행하려고하면 내가 무엇을 얻을 [ T = INT, N = 6 ] – user3326689

관련 문제