を取得します。は私が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 * 'を使います。 –
私はあなたが何をしようとしていることは、動物の工場作りだと思う - あなたが作るしようとしている場合 – UKMonkey