Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;类和变量 我对C++编程比较新。我正在研究类是如何工作的,我对以下代码有一个问题: #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; } #包括 使用名称空间std; 上课时间 { 公众: 时间(); 无效设置时间(int,int,int); void printuniversal(); 无效打印标准(); 私人: 整小时; 整数分钟; int秒; }; 时间::时间() { 小时=分钟=秒=0; } 无效时间::设置时间(inth,intm,ints) { 小时=(h>=0&&h=0&&m=0&&s构造成,但是现在,20年后,我绝对不使用使用命名空间STD< /Code >,它使代码读起来更容易,而且使代码编译得更干净(避免了上面的名称冲突)。这非常有效,谢谢。我告诉过你,在编程方面我还是个新手。:)我不知道使用名称空间std可能会引起冲突。@AndreaDePace:我们都在那里;)很高兴helped@AndyProwl选中后,它看起来不像time是一个在包含后可以自由用作类名的词。@Antonio:这可能是因为该实现将time().无论如何,正如我在回答中提到的,最好不要给出与标准中实体名称冲突的实体名称library@Antonio:可能是向后兼容C,简化了库实现者的生活。但是,对我们来说,这不是一件好事 int main () { my_code::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; }_C++_Class - Fatal编程技术网 =0&&h=0&&m=0&&s构造成,但是现在,20年后,我绝对不使用使用命名空间STD< /Code >,它使代码读起来更容易,而且使代码编译得更干净(避免了上面的名称冲突)。这非常有效,谢谢。我告诉过你,在编程方面我还是个新手。:)我不知道使用名称空间std可能会引起冲突。@AndreaDePace:我们都在那里;)很高兴helped@AndyProwl选中后,它看起来不像time是一个在包含后可以自由用作类名的词。@Antonio:这可能是因为该实现将time().无论如何,正如我在回答中提到的,最好不要给出与标准中实体名称冲突的实体名称library@Antonio:可能是向后兼容C,简化了库实现者的生活。但是,对我们来说,这不是一件好事 int main () { my_code::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; },c++,class,C++,Class" /> =0&&h=0&&m=0&&s构造成,但是现在,20年后,我绝对不使用使用命名空间STD< /Code >,它使代码读起来更容易,而且使代码编译得更干净(避免了上面的名称冲突)。这非常有效,谢谢。我告诉过你,在编程方面我还是个新手。:)我不知道使用名称空间std可能会引起冲突。@AndreaDePace:我们都在那里;)很高兴helped@AndyProwl选中后,它看起来不像time是一个在包含后可以自由用作类名的词。@Antonio:这可能是因为该实现将time().无论如何,正如我在回答中提到的,最好不要给出与标准中实体名称冲突的实体名称library@Antonio:可能是向后兼容C,简化了库实现者的生活。但是,对我们来说,这不是一件好事 int main () { my_code::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; },c++,class,C++,Class" />

C++;类和变量 我对C++编程比较新。我正在研究类是如何工作的,我对以下代码有一个问题: #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; } #包括 使用名称空间std; 上课时间 { 公众: 时间(); 无效设置时间(int,int,int); void printuniversal(); 无效打印标准(); 私人: 整小时; 整数分钟; int秒; }; 时间::时间() { 小时=分钟=秒=0; } 无效时间::设置时间(inth,intm,ints) { 小时=(h>=0&&h=0&&m=0&&s构造成,但是现在,20年后,我绝对不使用使用命名空间STD< /Code >,它使代码读起来更容易,而且使代码编译得更干净(避免了上面的名称冲突)。这非常有效,谢谢。我告诉过你,在编程方面我还是个新手。:)我不知道使用名称空间std可能会引起冲突。@AndreaDePace:我们都在那里;)很高兴helped@AndyProwl选中后,它看起来不像time是一个在包含后可以自由用作类名的词。@Antonio:这可能是因为该实现将time().无论如何,正如我在回答中提到的,最好不要给出与标准中实体名称冲突的实体名称library@Antonio:可能是向后兼容C,简化了库实现者的生活。但是,对我们来说,这不是一件好事 int main () { my_code::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; }

C++;类和变量 我对C++编程比较新。我正在研究类是如何工作的,我对以下代码有一个问题: #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; } #包括 使用名称空间std; 上课时间 { 公众: 时间(); 无效设置时间(int,int,int); void printuniversal(); 无效打印标准(); 私人: 整小时; 整数分钟; int秒; }; 时间::时间() { 小时=分钟=秒=0; } 无效时间::设置时间(inth,intm,ints) { 小时=(h>=0&&h=0&&m=0&&s构造成,但是现在,20年后,我绝对不使用使用命名空间STD< /Code >,它使代码读起来更容易,而且使代码编译得更干净(避免了上面的名称冲突)。这非常有效,谢谢。我告诉过你,在编程方面我还是个新手。:)我不知道使用名称空间std可能会引起冲突。@AndreaDePace:我们都在那里;)很高兴helped@AndyProwl选中后,它看起来不像time是一个在包含后可以自由用作类名的词。@Antonio:这可能是因为该实现将time().无论如何,正如我在回答中提到的,最好不要给出与标准中实体名称冲突的实体名称library@Antonio:可能是向后兼容C,简化了库实现者的生活。但是,对我们来说,这不是一件好事 int main () { my_code::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; },c++,class,C++,Class,这应该教会您不要使用下流的指令,例如: using namespace std; cout << "Initial universal time: " << t.printuniversal(); // ^^^^^^^^^^^^^^^^^^^^^ // printuniversal() returns void! 在标准库中有一个名为的函数

这应该教会您不要使用下流的
指令,例如:

using namespace std;
cout << "Initial universal time: " << t.printuniversal();
//                                 ^^^^^^^^^^^^^^^^^^^^^
//                                 printuniversal() returns void! 
在标准库中有一个名为的函数,其名称与您的类型名称冲突

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

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

格式错误,因为
printuniversal()
返回
void
。您只需执行以下操作:

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

cout你不应该给你的类命名
time
,或者你应该避免使用
名称空间std
。相反,你可以使用std::cout
使用std::endl
等语句。我个人从不使用“using”,总是保留std:,这样可以更方便我在源代码中搜索


无论如何,我检查过,删除
使用名称空间std
并没有真正的帮助(请参见)。请注意安全,并将名称更改为类。无论如何,上述建议仍然有效。

删除“使用名称空间std”指令的另一种方法是将代码放置在名称空间中,以避免名称冲突。这可以按如下方式完成:

namespace time_utils
{
    class time
    {
    public:
        time();
        void settime (int, int, int);
        void printuniversal ();
        void printstandard ();
    private:
        int hour;
        int minute;
        int second;
    };
};

time_utils::time::time()
{
    hour = minute = second = 0;
}
名称空间的目的是避免名称冲突

稍后,在cout流中调用函数时会出现编译错误,因此您可以按如下方式拆分它们:

int main ()
{
    my_code::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;
}
int main()
{
我的代码::时间t;

您是否应该避免
使用命名空间std
。有一个名为
std::time
的类可能与
time
类冲突。这可能不是问题所在,但最好不要引发此类问题。是的,首先将类重命名为不太通用的类,以消除名称冲突的可能性。实际上y、 我相信@juanchopanza一针见血。我将
time
重命名为
xtime
,它不再抱怨这一行(而是抱怨
void
函数被传递给
cout
@matstpeterson-Ha的结果,我已经说过很多次了“不要使用
使用名称空间std
,即使是在
.cpp
文件中,我也会与那些声称这样做很好的人进行愚蠢的斗争。我甚至想过用反例开始一个博客…:-)最初,用C++开始时,我使用命名空间…< /Code >构造成<代码>,但是现在,20年后,我绝对不使用<代码>使用命名空间STD< /Code >,它使代码读起来更容易,而且使代码编译得更干净(避免了上面的名称冲突)。这非常有效,谢谢。我告诉过你,在编程方面我还是个新手。:)我不知道使用名称空间std可能会引起冲突。@AndreaDePace:我们都在那里;)很高兴helped@AndyProwl选中后,它看起来不像
time
是一个在包含后可以自由用作类名的词。@Antonio:这可能是因为该实现将
time().无论如何,正如我在回答中提到的,最好不要给出与标准中实体名称冲突的实体名称library@Antonio:可能是向后兼容C,简化了库实现者的生活。但是,对我们来说,这不是一件好事
int main ()
{
    my_code::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;
}