2009-12-12 3 views
1
class Newstring 
{ 
public: 
    Newstring(); 
    void inputChar (char); 
    void display(); 
    int length(); 
    void concatenate (char); 
    void concatenate (Newstring); 
    bool substring (Newstring); 
    void createList(); 
    Node * getHead(); // error 
private: 
    struct Node 
    { 
     char item; 
     Node *next; 
    }; 
    Node *head; 

}; 

구문 오류 : ''이 (가) 누락되었습니다. 앞에 '*' 내 getHead 함수에 대한 선언에 (예, 나는 더 좋은 이름을 생각할 수 없다). 이 함수의 목적은 헤드 포인터를 반환하는 것입니다.어떻게 링크 된 목록의 헤드 포인터를 반환하는 공용 함수를 작성합니까?

+0

알았어. 방금 개인 및 공개 블록을 교환했습니다. 모두에게 감사드립니다! – Brandon

+0

개인/보호/공개 블록을 여러 개 가질 수 있습니다. – peterchen

답변

3

노드를 사용하기 전에 선언하십시오.

1
Node * getHead() 

컴파일러는 getHead()가 발견 될 때 Node의 정의를 얻을 수 없습니다.

struct Node 
    { 
     char item; 
     Node *next; 
    }; 

노드를 사용하기 전에 정의하십시오.

class Newstring 
{ 
private: 
    struct Node 
    { 
     char item; 
     Node *next; 
    }; 
    Node *head; 
public: 
    Newstring(); ... 
    Node * getHead(); 
2

위에서 getHead() 노드 구조체를 선언해야합니다.

class Newstring 
{ 

public: 
    struct Node 
    { 
     char item; 
     Node *next; 
    }; 
    Newstring(); 
    void inputChar (char); 
    void display(); 
    int length(); 
    void concatenate (char); 
    void concatenate (Newstring); 
    bool substring (Newstring); 
    void createList(); 
    Node * getHead(); // error 
private: 

    Node *head; 

}; 
+0

구조체를 비공개로 유지하여이를 수행하는 방법이 있습니까? – Brandon

+0

개인 블록으로 정의하십시오. –

+0

Brandon> 구조를 선언하고 답변을 추가하는 방법을 설명 할 수 있습니다. – Klaim

2

개인의 구조체를 유지, 또는 선언을 추가하는 동안 현재의 코드를 유지 대해 브랜든에 대답하기 위해, 방법은 다음과 같습니다

class Newstring 
{ 
    struct Node; // here the declaration 
public: 

    Newstring(); 
    void inputChar (char); 
    void display(); 
    int length(); 
    void concatenate (char); 
    void concatenate (Newstring); 
    bool substring (Newstring); 
    void createList(); 
    Node * getHead(); // error 
private: 
    struct Node 
    { 
     char item; 
     Node *next; 
    }; 
    Node *head; 

}; 
1

또 다른 방법은 struct을 배치하여 Node를 선언 전달하는 것 이전 Node

: 
    void createList(); 
    struct Node * getHead(); 
private: 
    struct Node 
    { 
     : 
+0

이것은 코딩 규칙을 유지하고 코드를 명확하게 만듭니다. –

관련 문제