2012-06-05 2 views
4

나는 이에 매달 렸습니다. 선생님은 무슨 일이 일어나고 있는지도 모릅니다. 누군가 나를 크게 도와 주시면 감사하겠습니다.은 .h로 선언되었지만, 범위 내에서 선언되지 않았습니다.

라인 구조체의 헤더 파일에 항목을 선언했습니다. 그러나 Line :: display() 메서드에서 호출 할 때 변수가 범위에서 선언되지 않았다는 오류가 발생합니다. 나는 선생님과 친구들을 보여 주었고 아무도 해결책을 알지 못합니다. 여기

//Line.h 
#define MAX_CHARS 40 
struct Line { 
    public: 
    bool set(int n, const char* str); 
    void display() const; 

    private: 
    char item[MAX_CHARS]; 
    int no; 
    }; 

그리고 내 .cpp 파일은 다음과 같습니다

여기 내 .H입니다.

// Line.cpp 
#include "Line.h" 
#include <iostream> 
using namespace std; 

#define MAX_CHARS 40 

void Line::display() const { 
    cout << no << ' ' << item << endl; 
} 

아무 도움도 필요하지 않습니다. 미리 감사드립니다.

+0

어떤 컴파일러/플랫폼을 사용하고 있습니까? – Attila

+0

당신이 전화 할 때 당신은 오류가 발생한다고 말합니까? 컴파일 할 때가 아닐까요? –

답변

5

이것이 실제 코드 인 경우 다른 곳에서 머리글을 가져 오는 것일 수 있습니다. 시도 : 또한

#include "C:\\fullPathToHeader\\Line.h" 
#include <iostream> 
using namespace std; 

void Line::display() const { 
    cout << no << ' ' << item << endl; 
} 

:

  • 하지 않는 cpp 파일에 MAX_CHARS을 다시 정의합니다.
  • 헤더에 가드가 포함됩니다.
-4

Line :: display를 const로 만들려면 인스턴스 변수 데이터가 필요하지 않습니다.

// Line.cpp 
#include "Line.h" 
#include <iostream> 
using namespace std; 

void Line::display() 
{ 
    cout << no << ' ' << Line::item << endl; 
} 
+4

아니요, ** 인스턴스 멤버를 ** 변경하지 않았 음을 의미합니다. –

관련 문제