Utilisation non valide le nom du modèle, sans liste d'arguments
Je suis tenter de faire deux choses qui me donnent des problèmes:
1) définition de type d'un std::vector
2) déclarer std::auto_ptr
Tous les deux pour me donner l'erreur "invalid use of template-name 'std::vector/auto_ptr' without an argument list"
. Voici mes en-têtes où l'erreur est causé:
ResourceLocationDefinition.h
//ResourceLocationDefinition contains the information needed
//by Ogre to load an external resource.
#ifndef RESOURCELOCATIONDEFINITION_H_
#define RESOURCELOCATIONDEFINITION_H_
#include "string"
#include "vector"
struct ResourceLocationDefinition
{
ResourceLocationDefinition(std::string type, std::string location, std::string section) :
type(type),
location(location),
section(section)
{
}
~ResourceLocationDefinition() {}
std::string type;
std::string location;
std::string section;
};
typedef std::vector ResourceLocationDefinitionVector;
#endif
EngineManager.h
#ifndef ENGINEMANAGER_H_
#define ENGINEMANAGER_H_
#include "memory"
#include "string"
#include "map"
#include "OGRE/Ogre.h"
#include "OIS/OIS.h"
#include "ResourceLocationDefinition.h"
//define this to make life a little easier
#define ENGINEMANAGER OgreEngineManager::Instance()
//All OGRE objects are in the Ogre namespace.
using namespace Ogre;
//Manages the OGRE engine.
class OgreEngineManager :
public WindowEventListener,
public FrameListener
{
public:
//Bunch of unrelated stuff to the problem
protected:
//Constructor. Initialises variables.
OgreEngineManager();
//Load resources from config file.
void SetupResources();
//Display config dialog box to prompt for graphics options.
bool Configure();
//Setup input devices.
void SetupInputDevices();
//OGRE Root
std::auto_ptr root;
//Default OGRE Camera
Camera* genericCamera;
//OGRE RenderWIndow
RenderWindow* window;
//Flag indicating if the rendering loop is still running
bool engineManagerRunning;
//Resource locations
ResourceLocationDefinitionVector resourceLocationDefinitionVector;
//OIS Input devices
OIS::InputManager* mInputManager;
OIS::Mouse* mMouse;
OIS::Keyboard* mKeyboard;
};
#endif /* ENGINEMANAGER_H_ */
- alors pourquoi ne pas donner ita argument de modèle ?
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation de modèles, vous devez fournir les paramètres de modèle, pour votre vecteur, vous voulez probablement faire quelque chose comme ceci:
Ce qui signifie que votre vecteur références
ResourceLocationDefinition
des instances de l'objet.et pour votre
auto_ptr
quelque chose comme ceci:Je crois que vous voulez un
Ogre::Root
pointeur de là à droite?L'erreur est assez clair.
auto_ptr
etvector
sont des modèles. Ils vous demandent de spécifier le type que vous voulez utiliser avec eux.Concernant
auto_ptr
: Il a été abandonné en raison de son étrange sémantique. Envisagez d'utiliser unstd::unique_ptr
(si disponible sur votre plate-forme) ouboost::scoped_ptr
(quand vous avez un coup de boost à la dépendance.)