размещение определений функций в файлах заголовков

Если вы хотите поместить определения функций в файлы заголовков, похоже, есть три разных решения:

  1. отметить функцию как inline
  2. отметить функцию как static
  3. помещает функцию в анонимное пространство имен

(До недавнего времени я даже не знал о №1.) Так в чем же различия между этими решениями, и когда я должен предпочесть какое? Я нахожусь в мире только заголовков, поэтому мне действительно нужны определения в файлах заголовков.

14
задан fredoverflow 20 October 2011 в 09:37
поделиться

1 ответ

Вы могли рассмотреть обертывание методов в классе вместо пространства имен. Объявите эти методы как статичные и удалите конструктора класса для укрепления этого, это не объект, который инстанцируют.

struct FooNamespace
{
    FooNamespace() = delete;

    static FooMethod1() {
        ...
    }
    static FooMethod2() {
        ...
    }

};

Вы получаете то же общее поведение как он принадлежащий пространству имен только с единственной реализацией.

0
ответ дан 1 December 2019 в 13:18
поделиться
Другие вопросы по тегам:

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