Ошибка класса C ++ - PullRequest
       44

Ошибка класса C ++

0 голосов
/ 25 ноября 2010

у меня есть этот код

#include <iostream>
using namespace std;

class time{
            public:

             time();        //constructor

             void settime(int,int,int);

             void print();

      private:

              int hour,min,sec;

              };

//constructor

time::time(){

             hour=min=sec=0;

             }

int main(){

    int num;

    time t1;//line1

    time t2;//line2

    cout<<"hello"<<endl;

    cin>>num;

    return 0;}

и ошибки в этих строках:

Ожидается `; 'перед "t1"

оператор [Warning] является ссылкой, а не вызовом функции `time '

для каждой строки

в чем проблема ???

1 Ответ

7 голосов
/ 25 ноября 2010

Существует функция std::time, которая импортируется в глобальное пространство имен при использовании using namespace std;. Это конфликтует с вашим классом с именем time. Это еще одна веская причина никогда не использовать using namespace std; в области имен.

Обратите внимание, однако, что не все реализации стандартной библиотеки соблюдают правило, согласно которому имена в стандартной библиотеке, полученные из стандартной библиотеки C, не должны помещаться в глобальное пространство имен по умолчанию.

Другим вариантом является присвоение имени time class, что позволит работать в любой системе:

class time t1;
class time t2;

Вы также можете просто подумать о переименовании своего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...