Potřebuji pole pro třídu Fronty(queue), to jsem alokoval takhle:
queue *p = new queue[10];
To funguje, dokonce dokážu pracovat s více třídami tak jak potřebuji, ale problém je v tom, že při odalkokaci mi hází VS chybu a já nevím kde chyba je. Odalokovávám takhle:
delete [] p;
Chyba je takováto:
Celkový kód vypadá nějak takhle:
#include <iostream>
#include <string.h>
#include "queue.h"
using namespace std; void main(){ queue *p = new queue 1]; delete [] p; system("pause"); }
A ještě přidávám queue.cpp:
#include "queue.h"
queue::queue(){
}
void queue::AllocSize(int capacity){
mCapacity = capacity;
mTail = 0;
mHead = 0;
mCanBeEmpty = true;
mCanBeFull = capacity == 0;
mPole = new int[mCapacity];
}
bool queue::Put(int arg){
if (Full())
return false;
mCanBeFull = true;
mCanBeEmpty = false;
mPole[mTail] = arg;
mTail = ++mTail % mCapacity;
}
int queue::Get(){
if (Empty())
return -1;
mCanBeFull = false;
mCanBeEmpty = true;
int temp = mHead;
mHead = ++mHead % mCapacity;
return mPole[temp];
}
bool queue::Full(){
return (mTail == mHead) && mCanBeFull;
}
bool queue::Empty(){
return (mTail == mHead) && mCanBeEmpty;
}
queue::~queue(void){
delete [] mPole;
}
Vůbec nevím kde je chyba, přitom když queue vyměním za int, nebo double, projede program bez problémů, bez chyby.