7

私はまだ C++ を学んでいるので、クラスと構造体に関するモジュールから始めました。すべてを理解しているわけではありませんが、ある程度は理解できたと思います。コンパイラが私に与え続けるエラーは次のとおりです。

error: expected primary-expression before '.' token

コードは次のとおりです。

#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%わかりません。

4

2 に答える 2

14

あなたのclass Exam:moduleで、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オブジェクトは自動的に空の文字列に初期化されますが、この行はとにかく役に立ちません。

于 2013-09-22T09:32:58.357 に答える