push进队列的C2075错误

来源:互联网 发布:低空突防航迹规划算法 编辑:程序博客网 时间:2024/05/22 18:59

碰到了一个问题,记录下。

代码如下所示:

//source.h

#include <queue>
using namespace std;
typedef int ARR[500];
queue<ARR> arr;


//source.cpp

#include "source.h"
#include <iostream>
int main()
{
 ARR _arr;
 arr.push(_arr);
 return 0;
}

/***********************************************分割线***********************************************/

编译错误为:c:\program files (x86)\microsoft visual studio 9.0\vc\include\xmemory(52) : error C2075: 'Target of operator new()' : array initialization needs curly braces

查官方文档,错误可能产生的原因:

但这不是啊,后来问人,原来是个低级错误。typedef只能算别名,并没有产生任何新的数据结构,修改如下:

//source.h

#include <queue>
using namespace std;
struct ARR{
 int arr[500];
};
queue<ARR> arr;


//source.cpp

#include "source.h"
#include <iostream>
int main()
{
 ARR _arr;
 arr.push(_arr);
 return 0;
}


编译通过。。