0
아래의 코드 조각에서 변수 (예 : x, y, 유형)를 사용하여 클래스 클래스의 인스턴스를 초기화하려면 어떻게해야합니까? 나는 그것을 올바르게 작동 시켰고 얼마나 많은 것들을 삽입했는지에 관계없이 인스턴스를 트리거합니다 ... 나는 각 인스턴스마다 다를 특정 변수를 가진 적을 생성하는 최선의 방법을 알아야합니다 ... 특히 그 변수 중 기본 클래스에 있고 다른 변수는 없습니다.특정 변수 값을 사용하여 파생 클래스 시작
class BaseObject
{
public:
virtual void Render() = 0;
int x;
int y;
};
class Enemy : public BaseObject
{
public:
Enemy() { }
virtual void Render()
{
cout << "Render! Enemy" << endl;
}
typedef std::set<BaseObject *> GAMEOBJECTS;
GAMEOBJECTS g_gameObjects;
int main()
{
g_gameObjects.insert(new Enemy());
g_lootObjects.insert(new Loot());
for(GAMEOBJECTS::iterator it = g_gameObjects.begin();
it != g_gameObjects.end();
it++)
{
(*it)->Render();
}
for(GAMEOBJECTS::iterator it = g_lootObjects.begin();
it != g_lootObjects.end();
it++)
{
(*it)->Render();
}
return 0;
}
감사합니다! 그건 완벽하게 작동합니다. 이상한 구문 ... 왜 내가 x (x), y (y) {} 부분을 왜 타이핑하는지 분명히 해 주시겠습니까? x (x)의 첫 번째와 두 번째 x는 무엇과 일치하며, 빈 squigglies는 어떤 용도로 사용됩니까? – motioneffector
@motioneffector : 처음 엔 이상하게 보일 수 있지만 좋아지면 커질 것입니다. 다른 언어와 비교하면 정말 멋지 네요. – GWW
괄호는 객체의 생성자를 호출하는 것을 의미합니다. _squigglies_는 함수의 본문이며이 경우 클래스의 빈 생성자입니다. 이것은 초기화리스트로 알려져 있으며, 멤버 변수 초기화를 위해 생성자에서 할당을 수행하는 것보다 더 효율적입니다. – AJG85