| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1956 人关注过本帖
标题:error C2601: 'compare_huff' : local function definitions are illegal怎 ...
只看楼主 加入收藏
xxxxhhhui
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-4-17
收藏
 问题点数:0 回复次数:5 
error C2601: 'compare_huff' : local function definitions are illegal怎么修改?
bool compare_huff(const HUFF & m1, const HUFF & m2)
{
    return m1.prob > m2.prob;

}


int main(int argc, char* argv[])
{   vector<HUFF> vhuff;

    char code[100]=m_shuru;

    for(int i=0;i<strlen(code);i++)
    {
        //用来标识当前code中的符是不是已经存在于vhuff中
        bool newchar = true;

        for(int j=0;j<vhuff.size();j++)
        {
            if(vhuff[j].c == code[i])
            {
                vhuff[j].prob += 1.0;
                newchar = false;
                break;
            }
        }

        if(newchar)//如果是新字符,即不在vhuff中
        {
            HUFF huff;
            huff.c = code[i];
            huff.prob = 1.0;
            vhuff.push_back(huff);
        }

    }
这个程序段有两个错误:D:\程序设计\HUFFMAN编码\HUFFMAN编码Dlg.cpp(195) : error C2601: 'compare_huff' : local function definitions are illegal
D:\程序设计\HUFFMAN编码\HUFFMAN编码Dlg.cpp(202) : error C2601: 'main' : local function definitions are illegal
哪位大虾能帮我看看应该怎么改啊?是在mfc控件中编写的。
搜索更多相关主题的帖子: function return false 
2011-04-18 00:12
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
程序代码:
int main(int argc, char* argv[])
{   vector<HUFF> vhuff;

    char code[100]=m_shuru;

    for(int i=0;i<strlen(code);i++)
    {
        //用来标识当前code中的符是不是已经存在于vhuff中
        bool newchar = true;

        for(int j=0;j<vhuff.size();j++)
        {
            if(vhuff[j].c == code[i])
            {
                vhuff[j].prob += 1.0;
                newchar = false;
                break;
            }
        }

        if(newchar)//如果是新字符,即不在vhuff中
        {
            HUFF huff;
            huff.c = code[i];
            huff.prob = 1.0;
            vhuff.push_back(huff);
        }
        return 1;
    }

   唯实惟新 至诚致志
2011-04-18 06:54
xxxxhhhui
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-4-17
收藏
得分:0 
改了还是不行,不过还是要谢谢你
2011-04-18 08:13
xxxxhhhui
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-4-17
收藏
得分:0 
完整的程序是这样的:    bool compare_huff(const HUFF & m1, const HUFF & m2)
    {
    return m1.prob > m2.prob;
 
    }

int main(int argc, char* argv[])
 {  

 
    vector<HUFF> vhuff;

     char code[100]=m_shuru;

     for(int i=0;i<strlen(code);i++)
     {
      
         bool newchar = true;

         for(int j=0;j<vhuff.size();j++)
         {
             if(vhuff[j].c == code[i])
             {
                 vhuff[j].prob += 1.0;
                 newchar = false;
                 break;
             }
         }

         if(newchar)
         {
             HUFF huff;
             huff.c = code[i];
             huff.prob = 1.0;
             vhuff.push_back(huff);
         }

     }
   

    for(int j=0;j<vhuff.size();j++)
    {
    m_shchu=vhuff[j].c +" 出现的次数为: "+vhuff[j].prob+"\r\n";
    }


    sort(vhuff.begin(),vhuff.end(),compare_huff);
    for(j=0;j<vhuff.size();j++)
    {
        vhuff[j].flag = j;
    }

    int leastIndex = vhuff.size()-1;

    for(i=1;i<vhuff.size();i++)
    {
        vhuff[leastIndex-1].prob += vhuff[leastIndex].prob;
        vhuff[leastIndex].prob = 0;

        int tflag1 = vhuff[leastIndex-1].flag;
        int tflag2 = vhuff[leastIndex].flag;

        for(int k=0;k<vhuff.size();k++)
        {
            if(vhuff[k].flag == tflag1)
                vhuff[k].hcode.push_back('1');
            if(vhuff[k].flag == tflag2)
            {
                vhuff[k].hcode.push_back('0');
                vhuff[k].flag = tflag1;
            }
        }

        sort(vhuff.begin(),vhuff.end()-i,compare_huff);

        for(j=0;j<vhuff.size()-i;j++)
        {
            int tflag = vhuff[j].flag;

            for(int k=0;k<vhuff.size();k++)
            {
                if(vhuff[k].flag == tflag)
                {
                    vhuff[k].flag = j+50;
                }
            }
        }

        for(k=0;k<vhuff.size();k++)
        {
            if(vhuff[k].flag >= 50)
            {
                vhuff[k].flag -= 50;
            }
        }


        leastIndex--;
    }

    for(i=0;i<vhuff.size();i++)
    {
        reverse(vhuff[i].hcode.begin(),vhuff[i].hcode.end());
        for(int j=0;j<vhuff[i].hcode.size();j++)
        m_bianma="字符"+vhuff[i].c+" 的编码是: "+vhuff[i].hcode[j]+"\r\n";
        
    }
return 0

}
编译出错:D:\程序设计\HUFFMAN编码\HUFFMAN编码Dlg.cpp(196) : error C2601: 'compare_huff' : local function definitions are illegal
D:\程序设计\HUFFMAN编码\HUFFMAN编码Dlg.cpp(202) : error C2601: 'main' : local function definitions are illegal
执行 cl.exe 时出错.
2011-04-18 09:12
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
return 0;  //加下分号吧!其他的我不懂,哎!


   唯实惟新 至诚致志
2011-04-18 10:36
xxxxhhhui
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-4-17
收藏
得分:0 
我今天特地去问老师了,结果老师一眼就看出来了……他告诉我mfc中main是已经定义了的,不需要定义了……还有就是说我mfc不熟悉。不过我确实没学过,呵呵。谢谢你啊楼上的那位。
2011-04-18 10:41
快速回复:error C2601: 'compare_huff' : local function definitions are ille ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.079715 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved