2012-01-11 51 views
1

我想第一次處理friend class。我寫了下面的代碼:朋友課對我不好?

class Kind{ 

private: 
    friend class Type; 
    int x; 

public: 
    Kind(){ x=0; } 
    void setX(int X) { x =X; } 
    int getX() { return x; } 

    }; 

class Type: public Kind { 
    public: 
    friend class Kind; 
    Type(){ } 
    Kind root; 
    root.x=3; 

}; 

編譯器告訴我,我不能做root.x=3;,這是什麼問題?

回答

3

問題是你試圖在編譯器期待成員聲明的地方執行語句。嘗試將其納入方法

class Type : public Kind { 
    ... 
    void Example() { 
    Kind root; 
    root.x = 3; 
    } 
}; 
1

您不能將該分配作爲類聲明的一部分。而是在成員函數中進行。