3
Voici un code simplifié d'un fichier d'en-tête dans lequel les fonctions libres sont déclarées mais non définies et le vecteur est à la fois déclaré et défini.Possible de déclarer le vecteur const dans le fichier d'en-tête?
Le fichier cpp contient l'implémentation des fonctions libres.
Je me demandais s'il y avait un moyen de déclarer le vecteur dans le fichier d'en-tête et de mettre la définition dans le fichier 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
Si vous déplacez le code d'accès à vecteur à une unité de traduction séparée, vous pouvez utiliser une déclaration avant: template ' std: vecteur; –
Je ne vois pas le vecteur dans le code. Vous cherchez [extern] (http://stackoverflow.com/questions/10422034/when-to-use-extern-in-c) std :: vector? –
nwp
N'utilisez pas un nom comme 'm_myvector' pour les variables non-membres, vous allez confondre les gens qui lisent votre code parce que le préfixe' m_' signifie classiquement un membre. –