有关 placement new,该怎么处理
有关 placement new
正在看primer C++ v3.0
8章 关于New的 有个例子,但在我的机器上怎么也编译不了
#include<new>
//#include<new.h>
char *arena =new char[sizeof(AA)];
AA *ptr=new (arena)AA("aa"); //这一句出错.提示arena 未定义
ptr->~AA();
AA *ptr=new (arena)AA("bb");
在类AA文件中也引 #include<new> 这是为什么呢? 还有<new>与<new.h>有什么区别? 谢谢!
------解决方案--------------------
new是标准新定义的,里面的名字放在namespace std中
在include后加上using namespace std;或using std::arena试试
------解决方案--------------------
上面错了,没细看...
正在看primer C++ v3.0
8章 关于New的 有个例子,但在我的机器上怎么也编译不了
#include<new>
//#include<new.h>
char *arena =new char[sizeof(AA)];
AA *ptr=new (arena)AA("aa"); //这一句出错.提示arena 未定义
ptr->~AA();
AA *ptr=new (arena)AA("bb");
在类AA文件中也引 #include<new> 这是为什么呢? 还有<new>与<new.h>有什么区别? 谢谢!
------解决方案--------------------
new是标准新定义的,里面的名字放在namespace std中
在include后加上using namespace std;或using std::arena试试
------解决方案--------------------
上面错了,没细看...
- C/C++ code
#include <new> //#include <new.h> class AA { }; int main() { char *arena =new char[sizeof(AA)]; AA *ptr = new(arena) AA(); ptr-> ~AA(); ptr=new(arena) AA(); return 0; }
------解决方案--------------------
不好意识 是#define
------解决方案--------------------
诶
怪不得
char *arena =new char[sizeof(AA)];
AA *ptr=new (arena)AA("aa"); //这一句出错.提示arena 未定义
ptr-> ~AA();
AA *ptr=new (arena)AA("bb");
看不出哪有错啊
你定义宏的时候最好别和标准的一些名字重了
不然编译必出错
自己取名字
丰衣足食