2013-03-23 2 views
-5

수정하려고 시도했지만 2 곳의 컴파일 오류가 있습니다. 여기 는이 오류 '문자열'라인 형식의 이름이없는 라인에 80 '의'선언되지 않은 (최초 사용이 함수는) 87컴파일 오류 :`string '은 타입의 이름을 지정하지 않습니다.

사람이 올바른 방향으로 날 가리하시기 바랍니다 수 있습니다

#include <iostream> 
#include <string> 

using namespace std; 


//class type declared 
    class Meeting 
    { 
    private: 
    string speaker; 
    string topic; 
    string venue; 
    string date; 
    public: 
    Meeting(); 
    void setSpeaker(string s); 
    void setTopic(string t); 
    void setVenue(string v); 
    void setDate(string d); 
    string getSpeaker(); 
    string getTopic(); 
    string getVenue(); 
    string getDate(); 

}; 

    //member functions for class Meeting 
    Meeting::Meeting() 
    { 
    string speaker = " "; 
    string topic = " "; 


string venue = " "; 
    string date = " "; 
} 

//mutators to set member variables to vale given 
void Meeting::setSpeaker(string s) 
{ 
    speaker = s; 
} 
void Meeting::setTopic(string t) 
{ 
    topic = t; 
} 
void Meeting::setVenue(string v) 
{ 
    venue = v; 
} 
void Meeting::setDate(string d) 
{ 
    date = d; 
} 


//Accessors to retrieve data from each of the member variables 
string Meeting::getSpeaker() 
{ 
    return speaker; 
} 
string Meeting::getTopic() 
{ 
    return topic; 
} 
string Meeting::getVenue() 
{ 
    return venue; 
} 
string Meeting::getDate() 
{ 
    return date; 
} 


//main using the class 
int main() 
{ 
     Meeting mMeeting; //instance of Meeting Class 
    Meeting 
     string s;  // error `string' does not name a type 
     string t; 
     string v; 
     string d; 

    // Enter Meeting Information 
    cout << "Enter Speaker name and surname: "; 
     getline(cin, s);  // error `s' undeclared (first use this function) 
     mMeeting.setSpeaker(s); 
    cout << "Enter Topic: "; 
     cin >> t; 
     mMeeting.setTopic(t); 
    cout << "Enter Venue: "; 
     cin >> v; 
     mMeeting.setVenue(v); 
    cout << "Enter Date: "; 
     cin >> d; 
     mMeeting.setDate(d); 


    //Display Meeting details 
    cout << "\nSpeaker at meeting: " << mMeeting.getSpeaker() << endl; 
    cout << "Topic at meeting: " << mMeeting.getTopic() << endl; 
    cout << "Venue of meeting: " << mMeeting.getVenue() << endl; 
    cout << "Date of meeting: " << mMeeting.getDate() << endl; 

system ("pause"); 
return 0; 
} 
+3

's'의 정의 위에 그 '모임'이 있어야 할까? –

+3

제쳐두고, 나는 지역 범위 밖에서'namespace std'를 사용하는 것에 대해 조언했다. 여분의'std ::'는 해를 끼치 지 않으며, 여러분과 여러분의 코드 독자들에게 표준 라이브러리를 사용하고 있음을 상기시킨다. 여기에 물건. IDE 완성, 헤더 파일 순서, 새로운'std' 헤더 파일 형식 등은 여러분의 타입과 충돌합니다. – Yakk

+0

좋은 교훈입니다. 컴파일러에서 오류가 한 줄에 있다고 종종 말하면 실제로 잘못된 이전 줄입니다. – john

답변

3

의의

+0

논리 오류를 보여 주셔서 감사합니다. 나는 수업과 목표에 대해 아주 새로운 사람입니다. – user1291092

+0

대단히 환영합니다. –

0

라인 79에서 Meeting을 제거하면 컴파일됩니다. 여기

Meeting::Meeting() 
{ 
    string speaker = " "; 
    string topic = " "; 
    string venue = " "; 
    string date = " "; 
} 

, 당신은 반원 값 " "을 할당에 의도 : 때문에 다른 사람에 의해 언급 된 오류를 제외하고이 라인

Meeting mMeeting; //instance of Meeting Class 
    Meeting //this line is creating error, remove this line 
    string s;  // error `string' does not name a type 
4

, 여기에 의미 론적 오류입니다 실제로 수행하는 작업은 4 개의 로컬 문자열 변수를 정의하고 " "으로 초기화하는 것입니다. 예상되는 결과를 얻으려면, 당신은이 작업을 수행해야합니다

Meeting::Meeting() 
{ 
    speaker = " "; 
    topic = " "; 
    venue = " "; 
    date = " "; 
} 

위의 함수 본문은 값이 당신이 할 의도 한대로 4 개 개의 클래스 멤버를 할당합니다.

+0

지적 해 주셔서 고맙습니다. 문제를 해결했습니다 – user1291092

관련 문제