最赞回答 / MAKER_01
应该是栈存储和数组存储一样,首地址为0,新增一个元素后m_iTop+1,指向下一个位置,元素存在位置0的内存中。因此第n个元素位置和对应的m_iTop=n指向的位置不同
2016-08-03
最赞回答 / 黑巫师0
m_pBuffer = new char[size]; 使用new动态申请了size个char类型大小的空间,如果把char换成类名时,就是申请size个类名大小的空间。但只要是给类实例化对象申请空间,就要调用类的构造函数,而所写的构造函数如果是Coordinate(int x , int y ); 不是默认构造函数,参数没有默认值,在实例化对象时,就必须给赋予x,y值,否则就会报错,而使用new运算符申请多个内存时,无法为每个对象都赋初值x,y。那样就会报错。因此就需要将构造函数改为有默认值的构造函...
2016-07-21
最新回答 / 翔纪念83574491
说一下出桟操作的,如果前面if语句满足要求的话,程序就直接return,后面的就不会执行,如果不满足要求的话,程序就会跳过if语句,执行后面的return语句,因此push那个操作是没有问题的
2016-07-14
最赞回答 / 我呵呵了
如果if(!pNeedStack->pop(currentNeed)){currentNeed=0;} 括号里面的条件是false,就相当于!pNeedStack->pop(currentNeed) 这句话是错的,注意前面的“!”,这句话要是错的,那么pNeedStack->pop(currentNeed) 就为真, 这句话本身也是一个出栈的操作,所以说,如果是真的话,会有东西出栈的,存到了currentNeed中。
2016-05-28
最赞回答 / 慕村3311326
这据说是VC的一个经典BUG。和namespace也有关. 只要含有using namespace std; 就会提示友员函数没有访问私有成员的权限。 解决方法:去掉using namespace std;换成更小的名字空间。 using std::endl; using std::cout;using std::ostream;或者将重载运算符函数放在Coordinate类中去定义。亲测两种均有效
2016-05-27
最赞回答 / qq_新欢_2
最后应该写成delete pStack;,我看你写成delete []pStack; 看来你和我一样,一开始以为这个是五个长度的数组了所以加了[]试试吧,我改过这个就对了
2016-04-30