我在c:
中有列表指针list<int> * pointer = (list<int> *)malloc(sizeof(list<int>));
当我尝试:
pointer->push_back(1);
我收到错误,因为malloc不调用列表构造函数。我知道用c ++执行此操作:
list<int> * pointer = new list<int>();
但我需要在c?
有人知道这方面的解决方案吗?
答案 0 :(得分:7)
不,因为这些是不同的语言。只是因为在名称中的公共字母之后只有文本字符串“++”并不意味着什么 - 这与尝试在Python中使用Java容器相当。
如果要使用STL,则必须使用C ++编译器。
答案 1 :(得分:0)
您还可以使用new()的“placement”版本。在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>();