C_19_DATE_H
struct date
{
private:
int day, month, year;
public:
date(int, int, int);
#endif
В теле класса:
#include "date.h"
#include <iostream>
date::date(int d=1, int m=1, int y=1970)
{
std::cout << "\nConstructor with variables\n " << std::endl;
day = d;
month = m;
year = y;
}
При компиляции в программе main.cpp:
#include <iostream>
#include "date.h"
using namespace std;
int main()
{
date start_date;
start_date.print();
}
Возникают ошибки:
1)error: no matching function for call to 'date::date()
2)note: candidate: 'date::date(int, int, int)'
Как это пофиксить? Я вроде понял, почему компилятор ругается во 2ом случае, но не понимаю, как решить эту проблему, не создавая конструктор без параметров для инициализации
Дефолтные аргументы должны быть в объявлении, а не определении
можно сделать еще красивее
Не очень понял, что это значит. Типо в объявлении int, int, int не указывать вообще?
=1 указывать не в .cpp, а в .h
Обсуждают сегодня