注册 登录
编程论坛 C++教室

调试的一个程序老师出现问题,求指导!

情在染 发布于 2011-08-20 10:31, 378 次点击
#include<iostream>
using namespace std;
class Time
{
public:
    Time(int,int,int);
        int hou;
        int min;
        int sec;
        void get_time();
}
Time::Time(int h,int m,int s)    //构造函数
{
    hou=h;
    min=m;
    sec=s;
}
void Time::get_time()
{
    cout<<hou<<":"<<min<<":"<<sec<<endl;
}
int main()
{
    Time t1(10,23,45);
    int *p1=&t1.hou;           //定义指向类中某一参量的指针
    cout<<*p1<<endl;
    t1.get_time();
    Time *p2;
    p2=&t1;                     //定义指向类的指针
    p2->get_time();
    void(Time::*p3)();         //定义了指向类内公共函数的指针
    p3=&Time::get_time;
    (t1.*p3)();
    return 0;
}
7 回复
#2
情在染2011-08-20 10:31
大侠们帮帮忙,很急用的。
#3
玩出来的代码2011-08-20 10:55
恩,你的程序错了。
#4
xg56992011-08-20 11:52
程序代码:
class Time
{
public:
    Time(int,int,int);
        int hou;
        int min;
        int sec;
        void get_time();
} //你的程序中漏了一个;
分号啊大哥

[ 本帖最后由 xg5699 于 2011-8-20 13:46 编辑 ]
#5
Hujc712011-08-20 15:27
(t1.*p3)();改为(this->p3)();再试试!
#6
xg56992011-08-20 15:34
楼上的你到是自己先试试,看看能不能通过.
是类少加了一个分号,加好就能编译成功

[ 本帖最后由 xg5699 于 2011-8-20 15:35 编辑 ]
#7
zhcosin2011-08-20 16:07
问题不少啊
1、类定义的结尾少了分号。
2、函数指针p3的定义应该为:
void (*p3)();//定义函数指针
p3=t1.get_time;//为指针赋值
(*p3)();//通过指针调用函数
#8
Hujc712011-08-20 17:48
受教了,我用手机看的,没注意分号!但改this也没有错,还有后面说的只是普通函数的指针定义调用,这是指向类的成员函数的指针,楼主应该不有问题!
1