2017-06-12 2 views
-3

Dans mon entrée, le fichier cpp contient les éléments suivants.déclaration et initialisation d'un vecteur dans le fichier d'en-tête

include <vector> 
#define ROWS 10 
#define COLS 20 

std::vector<std::vector<int>> exampleVector (ROWS, std::vector<int>(COLS, 10)); 

Cependant, si je mets ce même code dans mon fichier example.h je reçois

  • "attend un spécificateur de type" sur RANGS
  • "attend un")" sur COLS
  • "attendu un spécificateur de type" sur 10
  • "expected a"; sur la seconde)

Je suis conscient que je pouvais mettre

std::vector<std::vector<int> exampleVector; 

dans mon fichier example.h et

exampleVector.resize(ROWS, std::vector<int>(COLS, 10)); 

dans mon fichier example.cpp.

Toutefois, pour la propreté du code, je voudrais dans mon fichier d'en-tête avec mes tableaux fixes

char exampleName[MAX_NAME_LENGTH] 
int exampleConfig[MAX_LEVELS] 

etc

Répondre

-2

Il y a quelque chose de mal avec votre exemple de code (fermeture > manquant?) Mais en ignorant que la réponse est: la taille d'un std::vector ne peut pas être spécifiée au moment de la définition.

D'autre part, la taille d'un std::array peut être:

#include <array> 

#define ROWS 10 
#define COLS 20 

std::array<std::array<int, ROWS>, COLS> exampleArray; 
+0

Parfait! Merci beaucoup –

+0

Excuses @Sam Dean, j'ai probablement répondu à la mauvaise question. Cela ne fait rien pour résoudre le problème de l'en-tête/fichier source, alors sachez que cela pourrait être un faux-fuyant. –

+1

Cela ne pourrait pas être plus faux. Quel 'vecteur (size_type, T)' constructeur de 'vecteur ' fait? –