C类和变量

前端之家收集整理的这篇文章主要介绍了C类和变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对C编程比较陌生.我正在研究类如何工作,我遇到以下代码的问题: @H_403_2@#include <iostream> using namespace std; class time { public: time(); void settime (int,int,int); void printuniversal (); void printstandard (); private: int hour; int minute; int second; }; time::time() { hour = minute = second = 0; } void time::settime (int h,int m,int s) { hour = (h >= 0 && h < 24) ? h : 0; minute = (m >= 0 && m < 60) ? m : 0; second = (s >= 0 && s < 60) ? s : 0; } void time::printuniversal() { cout << hour << ":" << minute << ":" << second << ":" << endl; } void time::printstandard() { cout << ((hour == 0 || hour == 12) ? 12 : hour % 12) << ":" << minute << ":" << second << (hour < 12 ? "AM" : "PM") << endl; } int main () { time t; cout << "Initial universal time: " << t.printuniversal(); cout << "\nInitial standard time: " << t.printstandard(); t.settime(13,27,6); cout << "\nNew universal time: " << t.printuniversal(); cout << "\nNew standard time: " << t.printstandard(); return 0; }

我得到的错误是:
classi.cpp:42:6:错误:预期’;’在’t’之前
classi.cpp:43:39:错误:’t’未在此范围内声明

有什么我对课程不太了解吗?为什么它不识别“时间”变量?

解决方法

这应该教你不要使用令人讨厌的使用指令,例如: @H_403_2@using namespace std;

尤其不是在命名空间范围内(如果在头文件中更糟糕).标准库中有一个名为std::time()函数,其名称与您的类型名称冲突.

这种歧义可以通过在t的声明中使用class关键字来解决

@H_403_2@class time t;

但是,更好的方法删除using指令并从标准命名空间中限定实体的名称,从而编写(例如):

@H_403_2@std::cout << "Initial universal time: " // ^^^^^

请注意,这可能还不够,因为允许库实现将C标准库中的实体放在全局命名空间中.在这种情况下,删除讨厌的using指令无助于解决歧义.

因此,我还建议避免让自己的实体(类型,函数,变量……)与标准库中的实体同名,或者至少将它们放在您自己的命名空间中.

而且,表达式如:

@H_403_2@cout << "Initial universal time: " << t.printuniversal(); // ^^^^^^^^^^^^^^^^^^^^^ // printuniversal() returns void!

由于printuniversal()返回void,因此格式错误.你应该这样做:

@H_403_2@cout << "Initial universal time: "; t.printuniversal();

当然,这同样适用于所有类似的表达

原文链接:https://www.f2er.com/c/117188.html

猜你在找的C&C++相关文章