如题,未delete的动态数组不是可以任意范围使用吗?怎么好像NumInLay 这个只能在声明定义的函数内使用?
另外多问一句,怎么定义一个动态数组能让一个类的不同函数调用该数组的值?
另外多问一句,怎么定义一个动态数组能让一个类的不同函数调用该数组的值?
void BPNet::init() { //隐藏层层数 int hidenLayNum=2; int* NumInLay = new int[hidenLayNum+2]; //输入层节点数 NumInLay[0]=InLayerNodesNum; //输出层节点数 NumInLay[hidenLayNum+1]=OutLayerNodesNum; //下标由1到hidenLayNum,代表每层隐藏层的神经元个数 NumInLay[1]=5; NumInLay[2]=5; } int BPNet::train() { double a =NumInLay[1];//这里报错说NumInLay是未声明标识符 }
解决方案
80
int* NumInLay 定义在函数内,这个指针本身是局部变量
必须通过返回值,或其他方式传递到函数外部,才能够在其它函数内使用
一般来说,这个传递就是把指针的值,
复制出去(赋值给类的成员变量就可以了),
或 return 语句返回。
必须通过返回值,或其他方式传递到函数外部,才能够在其它函数内使用
一般来说,这个传递就是把指针的值,
复制出去(赋值给类的成员变量就可以了),
或 return 语句返回。