2014-06-30 1 views
0

string이 유형이 아니었다 고 오류가 발생했습니다. 그래서 나는 여기를 올려다 보았다. std :: string name; 헤더에 있어야하지만 프로그램을 컴파일 할 때 이름이 범위에서 선언되지 않았 음을 알립니다.std를 사용하는 클래스의 문자열 : 문자열 이름

여기 헤더 내 코드입니다 :

#ifndef INMATE_H 
#define INMATE_H 
#include <iostream> 
#include <string> 

class Inmate 
{ 
public: 
    Inmate(); 
    int getID(); 
    std::string getName(); 
    //int getHeightFt(); 
    //int getHeightInch(); 
    void setID(int x); 
    //void setName(): 
    //void setHeightFt(); 
    //void setHeightInch(); 

private: 
    int idNumber; 
    std::string name; 
    //int heightFt; 
    //int heightInch; 

}; 

#endif // INMATE_H 

이 내 CPP 파일의 코드

#include "Inmate.h" 
#include <iostream> 
#include <string> 

using namespace std; 

Inmate::Inmate() 
{ 
    cout << "What is the inmates name"<<endl; 
    cin >> name; 
} 

void Inmate :: setID(int x){ 
    idNumber = x; 
} 

int Inmate :: getID(){ 
    return idNumber; 
} 
string getName(){ 
    return name; 
} 
+0

[ "네임 스페이스 표준을 사용하는 이유는 무엇입니까"나쁜 연습으로 간주되는 이유는 무엇입니까?] (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) – Deduplicator

+0

이 문제는 문자열과는 전혀 관련이 없습니다 ... –

+0

오랫동안 코딩을하지 않았습니다. 이 사이트를 마지막으로 사용한 이후로 더 오래되었습니다. 나는 모든 코드를 거의 잊어 버렸고, 최근에 점프를 고려하고 있지만, 코드가 내가 돌아온 이유는 아니다. 오래된 미니 냉장고를 고치거나 재활용 할 때 가능한 가치에 관한 게시물을 확인하기 위해 로그인했으며,이 오래된 게시물을 보았습니다. 스택이 이들을 유지하는 것은 꽤 좋습니다. 이제는 더 나은 단어가 부족하여 오래된 코드와 오랜 실수에서 다시 배우기에 적합한 저장소가 있습니다. @Boundry – JayB901662

답변

2

당신은 당신의 getName() 방법에 Inmate 접두사를 잊었입니다.

string Inmate::getName(){ 
    return name; 
} 
해당 접두어없이

, getName 글로벌 범위에 존재하는 기능, name는 전역 범위 대신 클래스 범위에서 해결되었습니다. 전역 범위에 name 변수가 없으므로 컴파일러에서 오류를보고합니다.

+0

고마워! 자바에 너무 익숙해. cpp 파일은 저에게 적합합니다. – JayB901662

+0

@ JayB901662 매우 이해하기 쉽습니다. 나는 또한 Java 배경에서 왔습니다. – merlin2011

관련 문제