塔防游戏 错误 119 error C2057: 应输入常量表达式

问题描述:
问题行:
float angle[count[weapon->level - 1]];
错误列表:
错误 119 error C2057: 应输入常量表达式 d:\android\workspace\hello11\classes\gamelayer.cpp
错误 120 error C2466: 不能分配常量大小为 0 的数组
错误 121 error C2133: “angle”: 未知的大小
134 IntelliSense: 表达式必须含有常量值

代码内容:
//第三个防御塔的攻击
void GameLayer::fireBulletThree(int weap, int target, float dirction, Point position)
{
//从存放怪的数组中拿到怪
Monsters* monster = (Monsters*)arrMon->objectAtIndex(target);
//从存放防御塔的数组中拿到防御塔
Weapon* weapon = (Weapon*)arrWeap->objectAtIndex(weap);
//确定发射子弹的数量
int count[4] = { 1, 2, 2, 3 };

Point* positionByLevel = new Point[count[weapon->level - 1]];

float angle[count[weapon->level - 1]];
//如果当前防御塔的等级为1
if (weapon->level == 1)
{
	Point vacter1 = ccpForAngle(dirction - (15 * 3.1415926 / 180));
	vacter1 = ccpNormalize(vacter1);
	positionByLevel[0] = ccpAdd(weapon->getPosition(), ccpMult(vacter1, 36));
	angle[0] = dirction;
}
//如果当前防御塔的等级为3或者为2
else if (weapon->level == 3 || weapon->level == 2)
{
	Point vacter1 = ccpForAngle(dirction + (15 * 3.1415926 / 180));
	Point vacter2 = ccpForAngle(dirction - (15 * 3.1415926 / 180));
	vacter1 = ccpNormalize(vacter1);
	vacter2 = ccpNormalize(vacter2);
	positionByLevel[0] = ccpAdd(weapon->getPosition(), ccpMult(vacter1, 36));
	positionByLevel[1] = ccpAdd(weapon->getPosition(), ccpMult(vacter2, 36));
	angle[0] = dirction + (15 * 3.1415926 / 180);
	angle[1] = dirction - (15 * 3.1415926 / 180);
}
//如果防御塔当前的等级为4
else if (weapon->level == 4)
{
	Point vacter1 = ccpForAngle(dirction + (45 * 3.1415926 / 180));
	Point vacter2 = ccpForAngle(dirction - (45 * 3.1415926 / 180));
	vacter1 = ccpNormalize(vacter1);
	vacter2 = ccpNormalize(vacter2);
	positionByLevel[0] = position;
	positionByLevel[1] = ccpAdd(weapon->getPosition(), ccpMult(vacter1, 36));
	positionByLevel[2] = ccpAdd(weapon->getPosition(), ccpMult(vacter2, 36));
	angle[0] = dirction;
	angle[1] = dirction + (45 * 3.1415926 / 180);
	angle[2] = dirction - (45 * 3.1415926 / 180);
}

应该复习一下 C++ 基础, 如何动态的创建指定大小的数组