Проблема списка STL C - PullRequest
       3

Проблема списка STL C

3 голосов
/ 28 декабря 2010

У меня есть указатель списка в c:

list<int> * pointer = (list<int> *)malloc(sizeof(list<int>));

, когда я пытаюсь:

pointer->push_back(1);

Я получаю ошибку, потому что malloc не вызывает конструктор списка.Я знаю, чтобы сделать это в C ++ с:

list<int> * pointer = new list<int>();

, но мне нужно это в C?

Кто-нибудь знает решение для этого?

Ответы [ 2 ]

7 голосов
/ 28 декабря 2010

Нет, потому что это разные языки. Тот факт, что текстовая строка «++» стоит только после обычной буквы в имени, ничего не значит - это функциональный эквивалент попытки использования контейнера Java в Python.

Если вы хотите использовать STL, вы должны использовать компилятор C ++.

0 голосов
/ 06 ноября 2013

Вы также можете использовать "new" версию new (). чтобы вызвать конструктор в куске памяти, выделенной функцией malloc ().

/* allocate memory using malloc */
list<int> * pointer = (list<int> *)malloc(sizeof(list<int>));

/* invoke the C++ constructor using the placement version of new */
pointer = new(pointer) list<int>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...