파생 클래스 자체를 모른 채 파생 클래스 함수를 호출하는 상위 클래스로 소프트웨어를 작성하려고합니다. 나는 진짜 해결책에 도달하지 않고 그것에 대해 생각 해왔다. 부모 클래스를 사용하여 코드를 실행하려면 파생 클래스에서 포인터를 가져와야한다고 생각합니다.파생 클래스를 모른 채 상위 클래스의 파생 클래스 함수 호출
나는 순수 가상 함수와 부모 클래스가 있습니다
는 여기에 내가 무엇을 달성하고자합니다. 파생 클래스는 상기 함수를 구현할 것이다. 부모 클래스는 (벡터를 사용하여) 파생 클래스 함수의 코드를 실행하는 정적 함수도 갖습니다.
class Base {
static std::vector<Base*> vec;
public:
virtual void Test() = 0;
static void Func();
};
class Derived : public Base {
public:
void Test()
{
std::cout<<"hello";
}
};
void Base::Func()
{
for (int i = 0; i != vec.size(), i++)
{
vec[i]->Test();
}
}
문제는 다음과 같습니다. 모든 파생 클래스에서 "Test()"함수를 호출해야합니다. 하지만 내가 다른 파생 클래스가
예를 생성됩니다 무엇인지 때문에 프로그램 수행해야합니다 :
//Base.h
class Base {
static std::vector<Base*> vec;
public:
virtual void Test() = 0;
static void Func();
};
//Base.cpp
void Base::Func()
{
for (int i = 0; i != vec.size(), i++)
{
vec[i]->Test();
}
}
내 자료 : Func을()를 어떤 프레임에서 호출 될 것입니다. 이 점은 "사용자"에서
는 다음과 같이, 자신의 구현 및 헤더 파일을 만들 것입니다 ://Derived.h
class Derived : public Base {
public:
void Test() override;
};
//Derived.cpp
void Derived::Test()
{
//Insert code here
}
감사합니다 사전에 어떤 도움을.
추신 : 저는 게임 엔진의 업데이트 방법과 같은 것이 필요할 것입니다. Cocos2d 업데이트 방법과 같습니다.
무엇이 질문입니까? (이것은 당신이 설명한대로 작동해야합니다) –
문제는 : 모든 파생 클래스에서 "Test()"함수를 호출해야합니다. 하지만 다른 파생 클래스가 만들어 질지 모르기 때문에 프로그래밍 방식으로 수행해야합니다. –
당신의 솔루션은 완벽합니다. 바로 가상이 만든 것입니다. 너 해봤 니? – Wolf