hur.cn - 华软网

 热门搜索

新手练习C++类时出错,求指导

  作者:未知    来源:网络    更新时间:2011/9/15
#include <iostream>
using namespace std;
class Time 
{
private:
int  hour;
int minute;
int second;
public:
void set()
{cin>>hour>>minute>>second;}
void display()
{cout<<hour<<':'<<minute<<':'<<second<<endl;}
};
Time time1, * p;
p=&time1;
Time &time=time1;
int main()
{
cout<<sizeof(Time)<<endl;
time1.set();
time.display();
return 0;
}

---华软 网友回答---
出错信息是什么啊?
---华软网友回复---
Compiling...
4.cpp
E:\C++\MYPROJECTS\train_4_Time\4.cpp(16) : error C2501: 'p' : missing storage-class or type specifiers
E:\C++\MYPROJECTS\train_4_Time\4.cpp(16) : error C2040: 'p' : 'int' differs in levels of indirection from 'class Time *'
E:\C++\MYPROJECTS\train_4_Time\4.cpp(16) : error C2440: 'initializing' : cannot convert from 'class Time *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast





这是错误的内容
---华软网友回复---
LZ贴出错误信息啊
---华软网友回复---
Compiling...
4.cpp
E:\C++\MYPROJECTS\train_4_Time\4.cpp(16) : error C2501: 'p' : missing storage-class or type specifiers
E:\C++\MYPROJECTS\train_4_Time\4.cpp(16) : error C2040: 'p' : 'int' differs in levels of indirection from 'class Time *'
E:\C++\MYPROJECTS\train_4_Time\4.cpp(16) : error C2440: 'initializing' : cannot convert from 'class Time *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast


这就是错误信息呀   为什么不可以用指针指向类对象。。。。  
---华软网友回复---
p=&time1;
========
这句不在任何函数内,当不可以
---华软网友回复---
这就是错误信息呀 为什么不可以用指针指向类对象。。。。 
=======
是可以的,但是你必须将它写到main函数内去或是写在一个函数里面啊,它又不是变量定义,可以写在外面。
---华软网友回复---
嗯嗯  行了....   3Q....
---华软网友回复---
p=&time1;
这种形式一定要在函数体内才可以
---华软网友回复---
引用 4 楼 wo123456qw 的回复:
Compiling...
4.cpp
E:\C++\MYPROJECTS\train_4_Time\4.cpp(16) : error C2501: 'p' : missing storage-class or type specifiers
E:\C++\MYPROJECTS\train_4_Time\4.cpp(16) : error C2040: 'p' : 'int' differs……



改成下面这样就可以了

class Time  
{
private:
int hour;
int minute;
int second;
public:
void set()
{cin>>hour>>minute>>second;}
void display()
{cout<<hour<<':'<<minute<<':'<<second<<endl;}
};
Time time1,*p=&time1;//这样就可以了,在定义同时初始化
/*但是不建议这样用,最好是在函数里声明类对象或者动态声明并及时释放*/
//Time &time=time1;//不能用time,类名是Time,何必给自己找麻烦
Time &time2=time1;

int main(int argc, char* argv[]) 
{
cout<<sizeof(Time)<<endl;
time1.set();
p->display();//这样就好了
// time.display();
return 0;
}


---华软网友回复---
引用 5 楼 wltg2001 的回复:
p=&amp;time1;
========
这句不在任何函数内,当不可以

++
---华软网友回复---
上面说错了,Time &time=time1; 是可以正常用的,time 是对象 time1 的引用      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。