通过创建一个决定使用哪个类

时间:2016-11-30 05:38:27

标签: c++ function class header sleep

如何在头文件中实现sleep和usleep。这是我到目前为止所尝试过的,它不起作用。我还不是很精通c ++。我知道通过注释可以在HTML中执行类似的操作,并且每个浏览器都使用特定于它的代码。

这是我练习的样本:

help.cpp

#include <iostream>
#include "pause.h"

using namespace std;


int main() {

pause p;    

cout << "Hello";

p.pause(5000)

cout << " World";

}

另一个线程中有人建议使用#ifdef #else #endif让它在windows和linux / unix之间工作

pause.h

#ifdef _WIN32
    #include <windows.h>


class pause
{
    public:
        void pause(unsigned milliseconds)
        {
            Sleep(milliseconds);
        }
};

#else
        #include <unistd.h>

class pause
{
    public:
        void pause(unsigned milliseconds)
        {
            usleep(milliseconds * 1000); // takes microseconds
        }
};

#endif

不知怎的,我必须编写错误的类,因为运行我的.cpp文件它不能识别我尝试创建的类或对象。

错误

Running /home/ubuntu/workspace/help.cpp
In file included from /home/ubuntu/workspace/help.cpp:2:0:
/home/ubuntu/workspace/pause.h:20:41: error: return type specification for constructor invalid
         void pause(unsigned milliseconds)
                                         ^
/home/ubuntu/workspace/help.cpp: In function ‘int main()’:
/home/ubuntu/workspace/help.cpp:9:7: error: expected ‘;’ before ‘p’
 pause p;    
       ^
/home/ubuntu/workspace/help.cpp:13:1: error: ‘p’ was not declared in this scope
 p.pause(5000)
 ^
/home/ubuntu/workspace/help.cpp:15:1: error: expected ‘;’ before ‘cout’
 cout << " World";
 ^


Process exited with code: 1

2 个答案:

答案 0 :(得分:1)

您不能将成员函数与该类同名。 pause是类名,因此编译器会将您的pause函数(pause::pause)视为构造函数。

您可以将该课程重命名为Pause,然后p.pause将调用有效的Pause::pause函数。

答案 1 :(得分:0)

好吧,我现在不在Windows计算机附近,但似乎你误解了一些课堂表示法。 为什么用参数实现了构造函数pause::pause,但是没有调用?你为什么称一个成员函数pause::pause不在那里,更不用说它与class pause的名字相同?你混淆了他们。

让我简化一下情况来说明这一点,让你看看。 如果要打印数字,请按

设置课程PrintNumber

TEST.CPP:

#include <iostream>
#include "print-num.h"

int main(void)
{
   PrintNumber pr;
   pr.printMe(5000);
}

打印num.h:

#ifndef _PRINTNUM_
#define _PRINTNUM_

#include <iostream>

class PrintNumber
{
public:
   explicit PrintNumber(){};
   ~PrintNumber(){};

   void printMe(unsigned num) { std::cout << num << "\n"; }
};

#endif

这将会发生。

Sleep()替换我的打印号码然后重试? 您可以使用构造函数Pause和成员函数Pause::Pause(void)命名类Pause::sleepNow(unsigned),或者类似。