Однажды я решил эту проблему, перемещая все inlines после определения класса и помещая #include
для других классов непосредственно перед inlines в файле заголовка , Таким образом, убедитесь, что все определения + встроенные строки заданы до того, как строки синтаксического анализа проанализированы.
Выполнение этого действия позволяет по-прежнему иметь связку строк в обоих (или нескольких) файлах заголовков. .
Как это
// File: A.h
#ifndef __A_H__
#define __A_H__
class B;
class A
{
int _val;
B *_b;
public:
A(int val);
void SetB(B *b);
void Print();
};
// Including class B for inline usage here
#include "B.h"
inline A::A(int val) : _val(val)
{
}
inline void A::SetB(B *b)
{
_b = b;
_b->Print();
}
inline void A::Print()
{
cout<<"Type:A val="<<_val<<endl;
}
#endif /* __A_H__ */
... и делает то же самое в B.h
YYYY
не совпадает с yyyy
.
В соответствии с эта страница , на которую ссылается страница формата даты IOS ;
`y`: Year
`Y`: Year (in "Week of Year" based calendars). This year designation is used in
ISO year-week calendar as defined by ISO 8601, but can be used in
non-Gregorian based calendar systems where week date processing is desired.
May not always be the same value as calendar year.
Оперативное предложение является последним. Вместо этого используйте yyyy
.
Дальнейшая информация о том, как и почему значения года могут отклоняться при использовании YYYY
:
Начало года нумерации ISO в первый день (понедельник) недели 01 и заканчивается в воскресенье перед новым годом ISO (следовательно, без перекрытия или разрыва). Он состоит из 52 или 53 полных недель. Номер года, обозначающий номер недели, отличается от числа традиционного григорианского календарного года в пятницу, субботу и воскресенье, а также в субботу и воскресенье или только в воскресенье в начале традиционного григорианского календарного года (которые находятся на конец предыдущего года недели по ИСО) и понедельник, вторник и среда, или понедельник и вторник, или только понедельник, в конце традиционного григорианского календарного года (который находится на неделе 01 следующей недели ИСО - номер года). Для четверга номер года номер годности ISO всегда равен традиционному номеру календарного года в григорианском языке.
Примеры:
Понедельник, 29 декабря 2008 года, написан «2009-W01-1»,
В воскресенье 3 января 2010 года написано «2009-W53-7»
blockquote>Из https://en.wikipedia.org/wiki/ISO_8601#Week_dates (добавлен жирный стиль)