개체와 개체 모음이 비슷한 방식으로 동작하는 경우가 있습니다. 그래서했습니다 클래스 개체를 나타내는 :어떻게 구성 및 상속을 함께 사용합니까?
class A {
public:
virtual void foo();
protected:
int x;
};
을 그리고 개체의 컬렉션을 나타 내기 위해, 나는 다른 클래스를했습니다 :
class Collection: public A {
void foo(); //override base class function
private:
vector<A*> aList;
}
이 괜찮지 만, 문제는 그 컬렉션 클래스입니다 내가 필요로하지 않는 A :: x 사본을 갖게 될 것입니다. 클래스 Collection에서 데이터 멤버를 상속 받기를 원하지 않습니다. 이것을 어떻게 성취합니까?
참고 : 라이브러리에있는 "클래스 A"는 편집 할 수 없습니다. 수정 사항 : A. 인터페이스를 변경할 수 없습니다. 나머지 코드에서 A가 사용되고 있습니다. 구현을 수정할 수 있습니다. 이미 virtual이 아닌 경우 A :: anyFunction()을 virtual로 변경할 수 있습니다. 개인 회원을 보호 대상으로 변경할 수 있습니다.
당신은 인터페이스를 사용할 수 있습니다
를' Collection :: x'와'A :: x'는 같은'x'입니다. – LogicStuff
그 점을 이해합니다. 하지만 Collection 클래스에서 데이터 멤버가 필요하지는 않습니다. –
다형성 A를 기대하는 함수를 편집 할 수 있습니까? – StoryTeller