2013-12-17 4 views
1

Я попытался создать свой собственный класс, который содержит три переменные: день, месяц и год. И я добавляю двух операторов для сравнения. вот мой файл заголовка и CPP файл:Не могу создать свой собственный класс даты

Заголовок:

#ifndef DATE_H 
#define DATE_H 

#include "stdafx.h" 
#include <iostream> 
#include <string> 
#include <vector> 
#include <algorithm> 
#include <iterator> 
#include <array> 
using namespace std; 

class Date { 
public: 
    int day; 
    int month; 
    int year; 
    Date(int m, int d, int y); 
    bool operator< (const Date &) const; 
    bool operator== (const Date &) const; 
} 

#endif 

CPP:

#include "stdafx.h" 
#include "date.h" 

Date::Date(int m, int d, int y) 
    :day(d),month(m),year(y){} 

bool Date::operator< (const Date & d2) const 
{ 
    bool result; 
    if(year<d2.year){ 
     result=true; 
    } 
    else if (year==d2.year&&month<d2.month){ 
     result=true; 
    } 
    else if (month==d2.month&&day<d2.day){ 
     result = true; 
    } 
    else{ 
     result = false; 
    } 
    return result; 
} 

bool Date::operator== (const Date & d2) const 
{ 
    return (year==d2.year)&&(month==d2.month)&&(day==d2.day); 
} 

Ошибка

ошибка C2533: «Date :: {} т е р ': конструкторы не допускают тип возврата

Благодарим за помощь!

+3

Отсутствует точка с запятой в конце объявления класса. – David

+1

Зачем вам нужны какие-либо из этих файлов в заголовке? Вы не используете ни одного из них в заголовке! –

+0

Ваш файл cpp также не использует дополнительные файлы include. Я настоятельно рекомендую избавиться от * stdafx.h *, так как это вызывает больше проблем с небольшими файлами, чем разрешает. –

ответ

2

В определении класса отсутствует точка с запятой в конце.


Другие комментарии:

  • Чтобы избежать конфликтов имен (например, с std::distance), не ставят using namespace std; в глобальное пространство имен в заголовке.

  • <stdafx.h> - это нестандартный заголовок, определенный в вашем проекте Visual Studio, что делает этот код зависимым от Visual Studio. Вы можете избежать этого, отключив «предварительно скомпилированные заголовки» в настройках проекта.

0

Объявление класса или структуры должно заканчиваться на; '

Смежные вопросы