xem phần gạch đít, thiếu dấu = thành phép gánCode:bool stack::stackDay() { return(sP=KICH_THUOC_MD?true:false); }
Tai sao no' chỉ xuat ra : stackday, stackday !!!!!!!!!!!!!!
C++ Code:
#ifndef stackMang_H #define stackMang_H #include<iostream> #define KICH_THUOC_MD 100 typedef int KieuDL; ///DINH NGHIA KIEU STACK class stack { private: int kichThuoc; int sP; KieuDL *duLieu; public: stack(int kichThuoc=KICH_THUOC_MD); ~stack(); bool stackRong(); bool stackDay(); void push(KieuDL); KieuDL pop(); }; #endif [B]stackMang.cpp[/B] #include"stackMang.h" using namespace std; //CONTRUCTOR stack::stack(int kichThuoc) { sP=-1; this->kichThuoc=kichThuoc; duLieu=new KieuDL[this->kichThuoc]; } //DECTRUCTOR stack::~stack() { delete []duLieu; } //KIEM TRA STACK CO RONG HAY KHONG? bool stack::stackRong() { return(sP=-1?true:false); } //KIEM TRA STACK CO DAY HAY KHONG? bool stack::stackDay() { return(sP=KICH_THUOC_MD?true:false); } //PUSH MOT PHAN TU VAO STACK void stack::push(KieuDL duLieu) { if (stackDay()) else { sP++; this->duLieu[sP]=duLieu; } } ///POP MOT PHAN TU RA KHOI STACK KieuDL stack::pop() { if (stackRong()) { return NULL; } else { KieuDL tam=this->duLieu[sP]; sP--; return tam; } } [B]main.cpp[/B] #include<iostream> #include"stackMang.h" #include<conio.h> using namespace std; void main() { stack *s; KieuDL tam; s=new stack(10); s->push(10); s->push(30); while (!s->stackRong()) { tam=s->pop(); } getch(); }
xem phần gạch đít, thiếu dấu = thành phép gánCode:bool stack::stackDay() { return(sP=KICH_THUOC_MD?true:false); }
sP=KICH_THUOC_MD, lại lỗi 1 dấu = nữa.
Đảo ngược lại, viết thành: KICH_THUOC_MD == sP, nghĩa là viết sao cho giá trị bên trái là hằng, gán = vào hằng thì compiler sẽ báo lỗi liền. Còn không chịu đổi, thì cái lỗi 1 dấu = sẽ còn hành cậu dài dài sau này.