| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1067 人关注过本帖
标题:。函数指针数组。不懂错误的意思
取消只看楼主 加入收藏
kun内阁双狂
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2013-11-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
。函数指针数组。不懂错误的意思
#include<iostream>
using namespace std;
void square(float &x, float &y)
{
    x=x*x;
    y=y*y;
}
void cube(float &x, float &y)
{
    x=x*x*x;
    y=y*y*y;
}
void print(float &x, float &y)
{
    cout<<"长:"<<x<<"\t"<<"宽:"<<y<<endl;
}
void swap(float &x, float &y)
{
    float z;
    z=x;
    x=y;
    y=z;
}
int main(void)
{
    float a=2,b=3;
    char choice='0';
    int i;
    void (*p[5])(float &, float &);
    for (i=0; i<5; i++)
    {
        bool quit = false;
        cout<<"(0)退出,(1)平方,(2)立方,(3)交换x和y的值:";
        cin>>choice;
        switch (choice)
        {
        case '0': quit=true;    break;
        case '1': p[i]=square;    break;
        case '2': p[i]=cube;    break;
        case '3': p[i]=swap;    break;                //错误指向的地方
        default:p[i]=0;
        }
        if (quit)break;
        if (p[i]==0)
        {
            cout<<"请输入0到3之间的数字:";
            i=i-1;
            continue;
        }
        cout<<"第"<<i<<"次执行,到第5次结束\n";
        cout<<"初始值\n";
        print(a,b);
        cout<<"现在调用函数指针数组p["<<i<<"]所指向的函数...\n";
        p[i](a,b);
        cout<<"运算后\n";
        print(a,b);
    }
    return 0;
}
/*
——————————————————————————————————————
E:\c++\108函数指针数组\01.cpp(40) : error C2563: mismatch in formal parameter list
E:\c++\108函数指针数组\01.cpp(40) : error C2568: '=' : unable to resolve function overload
        could be 'void __cdecl swap(float &,float &)'
        E:\c++\108函数指针数组\01.cpp(17) : see declaration of 'swap'
        or       'void __cdecl std::swap(float &,float &)'
        d:\vc98\include\xutility(99) : see declaration of 'swap'
        or       'void __cdecl std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::swap(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std:
:char_traits<char>,class std::allocator<char> > &)'
        d:\vc98\include\xstring(378) : see declaration of 'swap'
        or       'void __cdecl std::swap(_Ty &,_Ty &)'
        d:\vc98\include\xutility(99) : see declaration of 'swap'
Error executing cl.exe.

01.obj - 2 error(s), 0 warning(s)
——————————————————————————————————————
*/
搜索更多相关主题的帖子: include choice 
2013-12-10 21:59
kun内阁双狂
Rank: 1
等 级:新手上路
帖 子:9
专家分:1
注 册:2013-11-29
收藏
得分:0 
回复 5楼 jiangcw007
/*
    根据5楼的回复我重新梳理了该程序,希望对各楼也有所收益:我学c++不是很久,对库的认识不够,不知道swap函数属于在库中已有定义,
    以至于读不懂错误的信息,我是把void型函数指针改为int型函数指针,在对应出也作出相应的改动,程序如下。5楼的第一种改法很简单,
    看了自然会懂。只是不知道使用这两种的利弊。。在这里顺便说一下6楼的程序,刚才始看很模糊,有几个代码以前没有看过,动了一下脑筋,
    再整理这些代码,还是可以明白他的意思的。谢谢各楼!谢谢!
*/
#include<iostream>
using namespace std;
int square(float &x, float &y)
{
    x=x*x;
    y=y*y;
    return x,y;
}
int cube(float &x, float &y)
{
    x=x*x*x;
    y=y*y*y;
    return x,y;
}
void print(float &x, float &y)
{
    cout<<"长:"<<x<<"\t"<<"宽:"<<y<<endl;
}
int swap(float &x, float &y)
{
    float z;
    z=x;
    x=y;
    y=z;
    return x,y;
}
int main(void)
{
    float a=2,b=3;
    char choice='0';
    int i;
    int (*p[5])(float &, float &);
    for (i=0; i<5; i++)
    {
        bool quit = false;
        cout<<"(0)退出,(1)平方,(2)立方,(3)交换x和y的值:";
        cin>>choice;
        switch (choice)
        {
        case '0': quit=true;    break;
        case '1': p[i]=square;    break;
        case '2': p[i]=cube;    break;
        case '3': p[i]=swap;    break;                //错误指向的地方
        default:p[i]=0;
        }
        if (quit)break;
        if (p[i]==0)
        {
            cout<<"请输入0到3之间的数字:";
            i=i-1;
            continue;
        }
        cout<<"第"<<i<<"次执行,到第5次结束\n";
        cout<<"初始值\n";
        print(a,b);
        cout<<"现在调用函数指针数组p["<<i<<"]所指向的函数...\n";
        p[i](a,b);
        cout<<"运算后\n";
        print(a,b);
    }
    return 0;
}
2013-12-12 20:52
快速回复:。函数指针数组。不懂错误的意思
数据加载中...
 
   



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

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