iut.ali
چهارشنبه 19 آذر 1393, 23:22 عصر
سلام من یه لیست پیوندی خیلی ساده نوشتم و حالا توش به یه مشکل برخوردم اول کدو بذارم
#include <iostream>
using namespace std;
class node
{
node* next;
int mData;
friend class linklist;
public:
void* operator new(size_t);
};
void* node::operator new(size_t x)
{
void * p = malloc(sizeof(node));
memset(p, 0, sizeof(node));
return p;
}
class linklist
{
node* first;
public:
void add(int);
void displayAll();
linklist();
};
linklist::linklist()
{
first = nullptr;
}
void linklist::add(int data)
{
node* newNode = new node;
if (newNode == nullptr) return;
newNode->mData = data;
if (first == NULL)
{
first = newNode;
return;
}
else
{
node* temp = first;
while (temp->next != NULL)
{
temp = temp->next;
}
temp->next = newNode;
}
}
void linklist::displayAll()
{
node* temp = first;
while (temp != NULL)
{
cout << temp->mData << endl;
temp = temp->next;
}
}
خب حالا مسئله اینجاس که اگه من اپراتور new رو overload نکنم برنامم run time error میده دلیلش رو نمیفهمم اگه کسی دلیلشو میدونه ممنون میشم بهم بگید
#include <iostream>
using namespace std;
class node
{
node* next;
int mData;
friend class linklist;
public:
void* operator new(size_t);
};
void* node::operator new(size_t x)
{
void * p = malloc(sizeof(node));
memset(p, 0, sizeof(node));
return p;
}
class linklist
{
node* first;
public:
void add(int);
void displayAll();
linklist();
};
linklist::linklist()
{
first = nullptr;
}
void linklist::add(int data)
{
node* newNode = new node;
if (newNode == nullptr) return;
newNode->mData = data;
if (first == NULL)
{
first = newNode;
return;
}
else
{
node* temp = first;
while (temp->next != NULL)
{
temp = temp->next;
}
temp->next = newNode;
}
}
void linklist::displayAll()
{
node* temp = first;
while (temp != NULL)
{
cout << temp->mData << endl;
temp = temp->next;
}
}
خب حالا مسئله اینجاس که اگه من اپراتور new رو overload نکنم برنامم run time error میده دلیلش رو نمیفهمم اگه کسی دلیلشو میدونه ممنون میشم بهم بگید