2015-07-16 4 views
3

Ниже приведен упрощенный код из файла заголовка, в котором свободные функции объявлены, но не определены, и вектор объявлен и определен.Можно объявить const-вектор в файле заголовка?

Файл cpp содержит реализацию свободных функций.

Мне было интересно, есть ли способ объявить вектор в файле заголовка и поместить определение в файл cpp.

// my-file.h 

namespace MyNamespace 
{ 
    bool foo(const std::string& name, const std::string& value); 
    void bar(const std::string& name, const std::string& value); 

    const std::vector<std::function<void(const std::string&, const std::string&)>> m_myVector 
    { 
     foo, 
     bar, 
     [](const std::string& name, const std::string& value) 
     { 
      // do some stuff 
     } 
    }; 

} // MyNamespace 
+0

Если вы съехать код с доступом к вектору отдельной единицы трансляции, вы можете использовать опережающее объявление: 'шаблон станда: вектор; '. –

+1

Я не вижу вектор в коде. Вы ищете [extern] (http://stackoverflow.com/questions/10422034/when-to-use-extern-in-c) std :: vector ? – nwp

+1

Не используйте имя типа 'm_myvector' для переменных, не являющихся членами, вы будете путать людей, читающих ваш код, потому что префикс' m_' условно означает член. –

ответ

4

Вы можете объявить константные переменные в своем заголовке, как:

extern 
const std::vector<std::function<void(const std::string&, const std::string&)>> m_myVector; 

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

  • Нет связанных вопросов^_^