2012-02-26 3 views
0

Возможно ли хранить несколько разных типов классов в одном объекте std::list?Несколько типов классов в одном списке

Я хочу сделать многослойный список, который может хранить int и std::list как элемент, и теперь я пытаюсь использовать std::list для этой цели. Мне нужно также получить данные из всего списка как с верхнего уровня, так и с последующих слоев.

This question here похоже, что я хочу использовать предварительно определенный класс.

Следующая ошибка возвращается в 4-й строке:

std::list<int> l; 
std::list<int> subL; 
l.push_back(1); 
l.push_back(subL); 

Это возвращает ошибку при 1 (и 3-й по 1-й линии):

std::list l; 
std::list<int> subL; 
l.push_back(1); 
l.push_back(subL); 
+2

P: аренда прекратить писать теги в заголовках. –

+1

Да, это возможно. Но почему вы хотите это сделать? Как вы будете использовать его позже? – Nawaz

+0

@Nawaz спасибо, что указал. Я уточнил свой вопрос, чтобы прояснить цель. – IsaacS

ответ

1

Вы можете объявить list <void*> и хранить ему указатели к любому из ваших объектов. Но другой вопрос поднимет, как вы собираетесь отличить их от использования? Если вам это не нужно, все в порядке.

+0

+1 но да, когда я обновляю свой вопрос, мне нужно получить сохраненные данные и рассказать друг другу. – IsaacS

+1

Самое простое решение - сделать класс whrapper чем-то вроде 'struct w {void * value; bool isInt; }; 'и составить список из них. –

1

Вы можете сохранить оба типа в одном значении, если используете что-то вроде boost::variant.

Смежные вопросы