Другие языки программирования и технологии

Нужно организовать связанный список на с++.

Нужно организовать связанный список на с++.
например
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;
}

Вот так вот.
Георгий Кондратьев
Георгий Кондратьев
255
Лучший ответ
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?
1. Уж определись, или Mylist, или MyList: в C/C++ регистр имеет значение
2. Либо
MyList(char* _name,void* obj)
...
this->object = obj;

либо

MyList(char* _name,void& obj)
...
this->object = &obj;

То, что написано - неправильно
ЮО
Юрий Онохов
26 780
Девушка, так писать нельзя (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;
}
// и прочие методы
}
! !
! !
1 006