C++ 인터페이스 (http://accu.org/index.php/journals/233)에 대한 기사를 읽었으며 모든 가상 멤버 함수를 개인적으로 만들어야한다고 말하는 부분에서 완전히 분실했습니다 ("분리 강화 "). 그것은 나에게 전혀 의미가 없습니다.C++ 인터페이스를 소개하는 기사에 대한 질문
저자에 따르면, 코드는 다음과 같다 :
class shape {
public:
virtual ~shape();
virtual void move_x(distance x) = 0;
virtual void move_y(distance y) = 0;
virtual void rotate(angle rotation) = 0;
//...
};
class line : public shape {
public:
line(point end_point_1, point end_point_2);
//...
private:
virtual ~line();
virtual void move_x(distance x);
virtual void move_y(distance y);
virtual void rotate(angle rotation);
//...
};
그래서 우리가 개인 인 순수 가상 공개 기능, (라인 클래스) 구현이있다.
아무도 move_x 함수를 호출 할 수있는 방법을 설명 할 수 있습니까? 자사의 액세스 지정 내가이 일을하려고하면, 그것은 오류로 이어질 것입니다 개인입니다 :
line my_line(point(0,0), point(1,2));
my_line.move_x(-1); // does not compile
마찬가지로이 드로잉 인터페이스 (기사 앞부분 참조) 중 하나 이러한 기능에 액세스 할 수 없다는 말을 정확?
감사합니다.
방금 코드를 만들려고했는데 소멸자가 개인이기 때문에 컴파일에 실패했습니다. – Patrick