在用VS2008跑一个LINUX可用的程序,出现了错误,请各位指教

hujilin1229 2012-01-14 01:12:25
int TLD::clusterBB(const vector<BoundingBox>& dbb,vector<int>& indexes){
//FIXME: Conditional jump or move depends on uninitialised value(s)
const int c = dbb.size();
//1. Build proximity matrix
Mat D(c,c,CV_32F);
float d;
for (int i=0;i<c;i++){
for (int j=i+1;j<c;j++){
d = 1-bbOverlap(dbb[i],dbb[j]);
D.at<float>(i,j) = d;
D.at<float>(j,i) = d;
}
}
//2. Initialize disjoint clustering
float *L[c-1]; //Level
int nodes[c-1][2];
int belongs[c];
int m=c;
for (int i=0;i<c;i++){
belongs[i]=i;
}
for (int it=0;it<c-1;it++)
{
//3. Find nearest neighbor
float min_d = 1;
int node_a, node_b;
for (int i=0;i<D.rows;i++){
for (int j=i+1;j<D.cols;j++){
if (D.at<float>(i,j)<min_d && belongs[i]!=belongs[j]){
min_d = D.at<float>(i,j);
node_a = i;
node_b = j;
}
}
}
if (min_d>0.5){
int max_idx =0;
bool visited;
for (int j=0;j<c;j++){
visited = false;
for(int i=0;i<2*c-1;i++){
if (belongs[j]==i){
indexes[j]=max_idx;
visited = true;
}
}
if (visited)
max_idx++;
}
return max_idx;
}

//4. Merge clusters and assign level
L[m]=min_d;
nodes[it][0] = belongs[node_a];
nodes[it][1] = belongs[node_b];
for (int k=0;k<c;k++)
{
if (belongs[k]==belongs[node_a] || belongs[k]==belongs[node_b])
belongs[k]=m;
}
m++;
}
return 1;

}

在整个程序编译的时候,这段子程序出现了10个错误,自己水平有限,不知如何修改,还望各位大侠帮忙指正,非常感谢!!
贴出错误如下:
error C2057: 应输入常量表达式
error C2466: 不能分配常量大小为 0 的数组
error C2133: “L”: 未知的大小
应输入常量表达式
不能分配常量大小为 0 的数组
“nodes”: 未知的大小
应输入常量表达式
不能分配常量大小为 0 的数组
“belongs”: 未知的大小
“=”: 无法从“float”转换为“float *”


问题主要出现在 const int c = dbb.size();这句话,然后后面数组L用了L(c-1),所以导致了这些错误,不知如何修改
...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
薛定谔之死猫 2012-01-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jackyjkchen 的回复:]

引用 4 楼 hujilin1229 的回复:
各位,我这个c的值也是通过参数传递进来的,本身我不知道具体值是多少啊,请问还有什么比较好的方法没

改成 new或者malloc,当然你得自己释放
[/Quote]++
jackyjkchen 2012-01-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hujilin1229 的回复:]
各位,我这个c的值也是通过参数传递进来的,本身我不知道具体值是多少啊,请问还有什么比较好的方法没
[/Quote]
改成 new或者malloc,当然你得自己释放
hujilin1229 2012-01-14
  • 打赏
  • 举报
回复
各位,我这个c的值也是通过参数传递进来的,本身我不知道具体值是多少啊,请问还有什么比较好的方法没
薛定谔之死猫 2012-01-14
  • 打赏
  • 举报
回复
修改的办法,把const去了,然后把动态数组改成静态,写一个静态大小的数组,如int belongs[1024];
jackyjkchen 2012-01-14
  • 打赏
  • 举报
回复
int belongs[c];
VS2008不支持
薛定谔之死猫 2012-01-14
  • 打赏
  • 举报
回复
这个没有办法了,vs不支持c99的,你那些动态数组的定义就只有改成静态数组了,比如int belongs[c];这样的定义是不行了~

64,676

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧