0

次のエラーが発生する理由と修正方法を誰かに説明してもらえますか。

コンパイルエラーは次のとおりです。

error: expected primary-expression before ‘.’ token

簡略化されたクラスとメソッド:

class test{
    private:
        int data;
    public:
        test() : data(1){}
        test(const test& copy):data(copy.data){} //copy constructor
        int getData(){
            return data;
        }
};

このメソッドは次のようにコンパイルされません。

int getDataFromClass(const test& src){
    return test.getData();
}

しかし、それはこのようにします

int getDataFromClass(const test& src){
    test t = test(src);
    return t.getData();
}

2 番目の方法は、参照によってデータを渡す目的に反するため、望ましくありません。

クラスを参照によって const として渡し、ローカル コピーを作成せずにいくつかのゲッター メソッドを使用できるようにしたいと考えています。

4

3 に答える 3

2

なぜなら、

int getDataFromClass(const test& src){
    return test.getData();
}

testオブジェクトではなく型です。

于 2013-10-01T13:54:49.440 に答える