2010-03-02 6 views
0

J'ai fait d'innombrables tentatives pour que cela fonctionne, mais tout ce que je fais me donne des erreurs d'exécution. J'ai essayé de faire des gestionnaires d'actifs pour gérer le contenu de mon moteur de jeu, et j'utilise lua et luabind pour mes scripts. Obtenir tout pour compiler, lier les classes et les variables, et récupérer les variables de base de lua n'ont pas été un problème jusqu'à présent.Comment utiliser Luabind et C++ pour créer une classe de gestion des ressources?

Mon problème est que j'utilise un std :: vector pour stocker des instances de mes classes d'actifs, et les vecteurs ne semblent pas s'entendre avec luabind. Je sais que je vais avoir besoin de ce vecteur parce que mon programme C++ l'utilisera pour le rendu et d'autres choses

Lorsque je lierai ma classe de gestionnaires et les variables (y compris le vecteur contenant mes classes d'actifs), tout se compilera et fonctionnera correctement. Dans mon script lua, je peux créer de nouveaux objets avec succès, mais lorsque j'essaie d'y accéder, j'obtiens une erreur d'exécution.

Pour résumer tout jusqu'à:

J'ai une classe qui contient des informations pour un objet de jeu ou des informations sur d'autres données.

J'ai une autre classe qui contient un vecteur de classes d'actifs. Lorsque j'essaie d'accéder à ce vecteur comme je le ferais pour une table normale, je reçois une erreur d'exécution.

Alors, que dois-je faire en C++ et en luabind pour pouvoir modifier les classes de ma classe de gestionnaire d'actifs?

+0

Le vecteur contient-il des pointeurs vers une interface "Asset"? Avez-vous une classe (telle que Assets ou AssetManager) qui contient le vecteur? Vous pourriez être mieux d'exposer les fonctions liées aux ressources enveloppées que d'essayer d'exposer le vecteur lui-même. –

Répondre

2

Vous devrez peut-être lier le type de vecteur lui-même avec des méthodes appropriées, ou essayez le return_stl_iterator de Luabind, qui fournit l'itération (mais pas l'indexation) sur les conteneurs compatibles STL.

Si vous avez besoin de plus d'aide, le code de vos liaisons et de leurs types serait utile.

Questions connexes