2013-09-22 84 views
4

我只想說我仍然在學習C++,所以我開始使用有關類和結構的模塊,雖然我不明白所有的東西,但我認爲我有點正確。編譯器一直給我的錯誤是:C++錯誤 - 預期'。'之前的主表達式令牌|

錯誤:期望在'。'之前的主表達式。令牌|

這裏是代碼:

#include <iostream> 
using namespace std; 

class Exam{ 

private: 
    string module,venue,date; 
    int numberStudent; 

public: 
    //constructors: 
    Exam(){ 
     numberStudent = 0; 
     module,venue,date = ""; 
    } 
//accessors: 
     int getnumberStudent(){ return numberStudent; } 
     string getmodule(){ return module; } 
     string getvenue(){ return venue; } 
     string getdate(){ return date; } 
}; 

int main() 
    { 
    cout << "Module in which examination is written"<< Exam.module; 
    cout << "Venue of examination : " << Exam.venue; 
    cout << "Number of Students : " << Exam.numberStudent; 
    cout << "Date of examination : " << Exam.date 
    << endl; 

    return 0; 
} 

的問題要求用存取函數,但我不知道我爲什麼要使用存取器。

不是100%肯定它們是如何工作的。

請幫忙。

回答

10

在您的class Exammodule,venuedate是私人成員,它只能在此類的範圍內訪問。即使您更改訪問修飾符public

class Exam { 
public: 
    string module,venue,date; 
} 

那些仍然與某個具體的對象(本類的實例),而不是類定義本身相關聯的成員(如static成員會)。要使用這樣的成員,你需要一個對象:

Exam e; 
e.date = "09/22/2013"; 

此外,請注意module,venue,date = "";不修改modulevenue以任何方式,你實際的意思是:

module = venue = date = ""; 

雖然std::string對象自動初始化爲空字符串,因此該行無論如何都是無用的。

0

您需要的存取器功能,以接受來自用戶的輸入您的變量來存儲模塊,地點和日期

例:

void setdetails() 
{ 
    cin.ignore(); 
    cout<<"Please Enter venue"<<endl; 
    getline(cin,venue); 
    cout<<"Please Enter module"<<endl; 
    getline(cin,module); 
}//end of mutator function 
+0

請格式化,並提供完整的示例代碼。 –

相關問題