Класс DateTime на французском языке [дубликат]

Члены класса:

Для деструктора pure virtual требуется реализация.

Объявление деструктора по-прежнему требует определения его (в отличие от обычной функции):

struct X
{
    virtual ~X() = 0;
};
struct Y : X
{
    ~Y() {}
};
int main()
{
    Y y;
}
//X::~X(){} //uncomment this line for successful definition

Это происходит потому, что деструкторы базового класса вызывается, когда объект уничтожается неявно, поэтому требуется определение.

virtual методы должны быть реализованы или определены как чистые.

Это похоже на методы не virtual без определения, с добавлением аргументов, которые генерирует чистая декларация dummy vtable, и вы можете получить ошибку компоновщика без использования функции:

struct X
{
    virtual void foo();
};
struct Y : X
{
   void foo() {}
};
int main()
{
   Y y; //linker error although there was no call to X::foo
}

Чтобы это сработало, объявите X::foo() чистым:

struct X
{
    virtual void foo() = 0;
};

Non- virtual

Некоторые члены должны быть определены, даже если они явно не используются:

struct A
{ 
    ~A();
};

Следующие ошибки приведут к ошибке:

A a;      //destructor undefined

Реализация может быть встроенной в самом определении класса:

struct A
{ 
    ~A() {}
};

или снаружи:

A::~A() {}

Если реализация вне определения класса, но в заголовке, методы должны быть отмечены как inline, чтобы предотвратить множественное определение.

Все используемые методы-члены должны быть определены, если они используются.

Общей ошибкой является отказ от квалификации имени:

struct A
{
   void foo();
};

void foo() {}

int main()
{
   A a;
   a.foo();
}

Определение должно быть

void A::foo() {}

static. Члены данных должны быть определены вне класса в единственная единица перевода:

struct X
{
    static int x;
};
int main()
{
    int x = X::x;
}
//int X::x; //uncomment this line to define X::x

Инициализатор может быть предоставлен для элемента данных static const типа интеграла или перечисления в определении класса; однако odr-использование этого элемента по-прежнему потребует определения области пространства имен, как описано выше. C ++ 11 позволяет инициализировать внутри класса для всех членов static const данных.

1
задан rink.attendant.6 29 October 2013 в 05:30
поделиться

1 ответ

Если вы хотите использовать эти четыре конкретных формата, ваш код будет правильным. IntlDateFormatter, который обертывает библиотеку ICU, предоставляет несколько стандартных форматов, и я верю в каждую страну / язык, некоторые из которых согласились с ними.

Если вы в порядке со своими «стандартами» мышления, вы можете назвать этот класс следующим образом ,

if (version_compare(PHP_VERSION, '5.3.0', '<')) {
    exit ('IntlDateFormatter is available on PHP 5.3.0 or later.');
}    
if (!class_exists('IntlDateFormatter')) {
    exit ('You need to install php_intl extension.');
}

$mediumShortFormatter = new IntlDateFormatter(
    'fr_CA',
    IntlDateFormatter::MEDIUM,
    IntlDateFormatter::SHORT
);
$longShortFormatter = new IntlDateFormatter(
    'fr_CA',
    IntlDateFormatter::LONG,
    IntlDateFormatter::SHORT
);
$longNoneFormatter = new IntlDateFormatter(
    'fr_CA',
    IntlDateFormatter::LONG,
    IntlDateFormatter::NONE
);
$noneShortFormatter = new IntlDateFormatter(
    'fr_CA',
    IntlDateFormatter::NONE,
    IntlDateFormatter::SHORT
);

$datetime = new DateTime("2013-07-01 22:00:00");
echo $mediumShortFormatter->format($datetime) . "\n";
echo $longShortFormatter->format($datetime) . "\n";
echo $longNoneFormatter->format($datetime) . "\n";
echo $noneShortFormatter->format($datetime) . "\n";

Вышеприведенный код возвращает мне это,

2013-07-01 22:00
1 juillet 2013 22:00
1 juillet 2013
22:00

Они не идентичны тем, которые были в вашем вопросе. Если вам действительно нужны ваши оригинальные форматы, которые вы показали, да, их нужно указывать по одному.

В случае с канадским французом вы можете быть уверены, что ваши форматы верны для ваших пользователей. Но для других мест вы установили эти пользовательские форматы? Если стандартные форматы (даже не идеальные, но) приемлемые для ваших пользователей, я рекомендую вам использовать эти стандартные форматы, тогда вам не нужно беспокоиться о правильных форматах на других языках / странах.

2
ответ дан akky 24 August 2018 в 04:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: