void 포인터를 사용하여 열거 형에서 고유 값을 가져 오려고합니다.고유 한 열거 형 값 가져 오기 C++
나는 그래서 먼저 동물
enum Animal {Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Sheep, Monkey, Rooster, Dog, Pig};
을 목록의 열거 선언을했습니다, 난 내 열거에서 나에게 값을 반환하는 기능이 무작위로
내 건설 기간 동안 다음VoidPtr getAnAnimal()
{
VoidPtr anAnimal;
Animal *a = new Animal;
int k = rand() % 12;
*a = static_cast<Animal>(k);
anAnimal = a;
return anAnimal;
}
배열, 나는 배열이 동일한 값을 가지고있는 경우 다른 열거 형 값을 무작위로 생성한다고 가정하는 조건문을 가짐
void constructSet(VoidPtr* animalArray, int size)
{
for(int i = 0; i < size; i++)
{
animalArray[i] = getAnAnimal();
int k = 0;
while ((k < i) && (animalArray[i] == animalArray[k]))
{
animalArray[i] = getAnAnimal();
k++;
}
}
}
불행히도 배열이 같으면 다른 값을 요구하면서도 동일한 열거 형 값을 반환합니다.
하나의 객체에 정수를 캐스팅 할 수 없습니다 - 당신은 아마 당신의'열거에 따라 공장 기능을 사용하려면 – UKMonkey
당신도 삭제되지 않고 손실되는 새로운 동물의 (a) 여기에 메모리 누수가있을 것입니다 '. 약간의 주조가 필요할 것입니다. 그리고'VoidPtr' 대신'Animal *'을 사용하십시오. –
당신이하려고하는 것은 동물 공장을 만드는 것이라고 생각합니다 - getAnimal (AnimalTypeEnum)을 호출하는 곳 ... 팩터 리 패턴이라고합니다 ... grr - @ πάνταῥε by에 의해 펀치에 맞 춥니 다 – UKMonkey