C++에서 Object 클래스를 사용하여 다른 클래스의 클래스 (예 : Ball, Paddle, Wall)를 상속받습니다. 각 하위 클래스별로 별도의 정적 멤버로 상속되는 Object 클래스에 정적 멤버를 갖는 방법이 있습니까?정적 멤버를 별도로 상속 할 수 있습니까?
기본적으로 Ball, Paddle 및 Wall에 각각 (개체를 상속하는 배열이 모든 개체의 일반적인 요구 사항이기 때문에) Object에서 상속 한 정적 멤버 (그리기 이미지 저장 용)가 있어야합니다. 고정 부재는 볼, 패들 및 벽 각각에 대해 분리되어 있습니다. 그렇게하면 모든 볼 인스턴스가 볼 이미지에 액세스 할 수 있고 모든 패들은 패들 이미지에 액세스 할 수 있습니다.
이것이 가능하지 않은 경우 비슷한 기능을 허용하는 좋은 방법은 무엇입니까?
편집 :
실제로 달성하기 위해 노력하고있어 일부 자세히 : 나는 브레이크 아웃 클론에서 일하고 있어요
. 나는 모든 게임 객체 (Ball, Paddle, Block, Wall)를 상속받는 Object 클래스를 가지고 있습니다. 이러한 모든 객체에는 자신을 그리기 위해 액세스해야하는 이미지가 몇 개 있습니다 (Object *가 std :: list의 모든 객체에 대해 수행하고 모든 객체에서 updateAndDraw() 메소드를 실행 함).
지금 당장 Ball, Paddle, Block 및 Wall 각각에는 객체에 필요한 모든 이미지를 저장하는 SFML (정적 sf :: Texture) 배열이 있습니다. 각 클래스의 모든 인스턴스가 이미지를 공유 할 수 있고 인스턴스마다 별도로로드해야하기 때문에 메모리가 낭비됩니다. 이미지는 각 게임 객체가 처음 구성 될 때로드되고 어레이에 저장됩니다.
기본적으로 이미지로드 및 저장 기능은 모든 게임 개체에서 동일하므로 개별 게임 개체와 개체로 이동하고 싶습니다. 내 계획은 각 게임 개체가 상속받을 Object에 정적 멤버를 갖는 것이 었습니다. 정적 멤버는 Ball, Paddle, Block 및 Wall 각각에 대해 독립적입니다. 나는 또한 loadImages(string filenames[])
이라는 객체에 정적 메서드를 가지고 있는데, 이미지 파일의 배열을 가져 와서 loadImages()
이 호출 된 게임 객체의 정적 이미지 배열에 이미지를로드합니다. 따라서 Ball 생성자에서 loadImages()
을 실행하고 일부 파일 이름을 전달하면 이미지를 Ball의 정적 이미지 배열에로드하고 다른 모든 게임 개체에 대해 (독립적으로)로드합니다.
이 모든 내용을 입력하면 이미지를 다른 위치에 저장하고 게임 개체에 해당 이미지의 포인터를 제공하는 것이 더 낫다는 것을 알고 있습니다. 이것은 이미지 배열을 정적으로 할 필요가 없으며 생성자에서 이미지를 저장하고 객체 유형을 전달하는 함수를 호출 할 수 있으며 게임에 대한 포인터의 배열을 건네줍니다 객체가 필요합니다.
참조 http://stackoverflow.com/questions/594730/overriding-static-variables-when-subclassing – James
이미지를 제공하기 위해 별도의 정적이 아닌 클래스를 만들고이를 구성하는 동안 각 클래스에 이미지를 제공합니다. 그런 다음 각 이미지 저장소 클래스의 단일 인스턴스를 작성하고 작성시이를 각각의 새 오브젝트 클래스로 전달하십시오. 기본적으로, 나는'정적'을 완전히 피하는 것이 리팩토링 프로그램을 훨씬 더 어렵게 만들고 자동화 된 테스트를 작성하는 것을 훨씬 어렵게 만듭니다. –