2012-01-11 2 views
1

처음으로 friend class을 처리하려고합니다. 나는 아래의 코드 작성 : 컴파일러 내가 root.x=3;을 할 수없는 것을 알려줍니다친구 클래스가 저와 잘 어울리지 않습니까?

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; 

}; 

을, 문제는 무엇입니까?

답변

3

문제는 컴파일러에서 멤버 선언이 필요한 위치에서 명령문을 실행하려고하는 것입니다. 방법에 넣으십시오.

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

클래스 선언의 일부로 할당을 수행 할 수 없습니다. 대신 멤버 함수에서 수행하십시오.

관련 문제