Нужно организовать связанный список на с++.
например
class MyList
{
private:
MyList *next,*prev;
char* name;
void *object; //ссылка на объект
Mylist(char* _name,void obj)
{
this->next = NULL;
this->prev = NULL;
name = _name;
this->object = *obj;
};
Объект должен быть неопределенного типа (Pointer). Компилятор ругается, не дает сделать подобную замутку. Помогите, как быть? Реализация в с# - просто и понятно, а тут....
Другие языки программирования и технологии
Нужно организовать связанный список на с++.
Получилось что то типа
#include <cstdlib>
#include <iostream>
#include <string>
#include <list>
using namespace std;
struct Node
{
void* obj;
string name;
};
typedef list<node> MyList;
int main(int argc, char** argv) {
MyList::iterator i;
MyList test; // default constructor
Node Tmp;
Tmp.name = "One";
Tmp.obj = (void*)"Hello!";
test.insert(test.end(), Tmp);
Tmp.name = "Two";
Tmp.obj = (void*)123;
test.insert(test.end(), Tmp);
Tmp.name = "Three";
Tmp.obj = (void*)"Bye bye";
test.insert(test.end(), Tmp);
cout << "test:"; Node x;
for (i = test.begin(); i != test.end(); ++i)
{
x = *i;
cout << x.name <<" ";
}
return 0;
}
Вот так вот.
#include <cstdlib>
#include <iostream>
#include <string>
#include <list>
using namespace std;
struct Node
{
void* obj;
string name;
};
typedef list<node> MyList;
int main(int argc, char** argv) {
MyList::iterator i;
MyList test; // default constructor
Node Tmp;
Tmp.name = "One";
Tmp.obj = (void*)"Hello!";
test.insert(test.end(), Tmp);
Tmp.name = "Two";
Tmp.obj = (void*)123;
test.insert(test.end(), Tmp);
Tmp.name = "Three";
Tmp.obj = (void*)"Bye bye";
test.insert(test.end(), Tmp);
cout << "test:"; Node x;
for (i = test.begin(); i != test.end(); ++i)
{
x = *i;
cout << x.name <<" ";
}
return 0;
}
Вот так вот.
class MyList {
private:
MyList *next, *prev;
char* name;
void *object; //ссылка на объект
public:
MyList(char* _name, void *obj) {
next = 0;
prev = 0;
name = _name;
object = obj;
}
};
Один хер, херня получится. Может подойдет что-либо из STL (std::list)?
> Объект должен быть неопределенного типа (Pointer).
И что ты потом с ним будешь делать? Может лучше сделать шаблонный класс?
> name = _name;
Есть уверенность, что Сишная строка с именем будет жить все время работы программы, ты здесь просто копируешь указатель? Может лучше std::string?
private:
MyList *next, *prev;
char* name;
void *object; //ссылка на объект
public:
MyList(char* _name, void *obj) {
next = 0;
prev = 0;
name = _name;
object = obj;
}
};
Один хер, херня получится. Может подойдет что-либо из STL (std::list)?
> Объект должен быть неопределенного типа (Pointer).
И что ты потом с ним будешь делать? Может лучше сделать шаблонный класс?
> name = _name;
Есть уверенность, что Сишная строка с именем будет жить все время работы программы, ты здесь просто копируешь указатель? Может лучше std::string?
1. Уж определись, или Mylist, или MyList: в C/C++ регистр имеет значение
2. Либо
MyList(char* _name,void* obj)
...
this->object = obj;
либо
MyList(char* _name,void& obj)
...
this->object = &obj;
То, что написано - неправильно
2. Либо
MyList(char* _name,void* obj)
...
this->object = obj;
либо
MyList(char* _name,void& obj)
...
this->object = &obj;
То, что написано - неправильно
Девушка, так писать нельзя (void obj)! void это не тип!
Если это не лаба какая-нибудь, то лучше используй STL модуль <list>, иначе
struct node{
node* next;
node* prev;
void* obj;
int objectType;
// нужные тебе запчасти
}
class List
{
private:
node* head;
node* tail;
public:
void add(void* a, int type)
{
node* tmp = new node;
tail -> next = node;
node -> obj = a;
node -> type = type;
node -> prev = tail;
node -> next = NULL;
tail = node;
}
// и прочие методы
}
Если это не лаба какая-нибудь, то лучше используй STL модуль <list>, иначе
struct node{
node* next;
node* prev;
void* obj;
int objectType;
// нужные тебе запчасти
}
class List
{
private:
node* head;
node* tail;
public:
void add(void* a, int type)
{
node* tmp = new node;
tail -> next = node;
node -> obj = a;
node -> type = type;
node -> prev = tail;
node -> next = NULL;
tail = node;
}
// и прочие методы
}
Похожие вопросы
- Связанные списки на с++;
- Дана действительная матрица размера n * m организовать однонаправленный список матрицы. Паскаль
- Нужно ли вообще создавать связной список в более высокоуровневых языках как PHP?
- Список с использованием указателей на Си
- C++ :Разработать пользовательскую библиотеку для работы с односвязным списком (использовать динамическую память).
- помогите с прогой на с++ списки
- C++. Указатели. Связный список. Как добавить элемент в конец списка? Вопрос для разбирающихся
- списки С\С++
- Создать список из повторяющихся слов текста из файла. Первый элемент-наиб. часто повторяющееся слово/ Паскаль. (+)
- Имеется список женихов и список невест.