c++ vecteur modèle de l'argument 1 est invalide

J'ai écrit un File classe dans File.h. Et j'ai écrit Répertoire de la classe dans Directory.h qui est d'inclure File& vecteur. Deux d'en-tête a même espace de noms.

Voici le code:

#include "File.h" 
#include <vector>

class Directory : public File
{
public:
    ...

private:
    std::vector<(File&)> files; 
};

Lorsque j'essaie de compiler, il dit:

In file included from Directory.cpp:1:0:
Directory.h:29:30: error: template argument 1 is invalid
         std::vector<(File&)> files; 
                              ^
Directory.h:29:30: error: template argument 2 is invalid
  • Vous ne pouvez pas avoir std::vector de types de référence. Le type doit être copiable. Aucune raison de ne pas utiliser std::vector<File>?
  • Alors que je devrais utiliser des pointeurs? Je vous remercie.
  • Et vous en avez besoin? Le polymorphisme?
  • En effet. De ce fait, je ne peux pas utiliser le Fichier vecteur. Mais std::vector<Fichier>& fichiers fonctionne aussi, je suppose
  • Non, ça ne marchera pas. le mieux est d'avoir vecteur de pointeurs intelligents.
  • Ok, je vais utiliser un pointeur. Je vous remercie.
  • Vous avez manqué LogicStuff point. Bien qu'il existe une relation, un pointeur intelligent est distincte à partir d'un pointeur.

InformationsquelleAutor | 2015-12-19