Les modèles C++ n'existent pas réellement en dehors du compilateur. Les instanciations des modèles existent, mais les modèles eux-mêmes sont purement une construction à la compilation.
Il n'y a pas de fonction appelée void addComponent<T>(IComponent*);
Il est une fonction appelée, void addComponent<int>(IComponent*)
ou void addComponent<float>(IComponent*)
ou pour un type particulier que vous voulez. Mais les modèles ne sont pas de vraies fonctions.
Vous pouvez lier un instanciation d'un modèle, qui est une fonction concrète. Cela fonctionne tout comme la liaison de n'importe quelle fonction libre dans toLua. Le nom d'une instanciation serait, addComponent<TypeName>
où TypeName
est le nom du type concret avec lequel vous voulez l'instancier.
En d'autres termes, vous ne pouvez pas lier le concept addComponent
qui est défini pour n'importe quel type. Vous pouvez lier tout réel addComponent
qui est défini pour un type spécifique.
Pouvez-vous donner des exemples de la façon dont vous voulez utiliser cette méthode? – kikito
Quelque chose comme ça de lua: 'go = GameObject: new(); animComponent = AnimComponent: new(); go: addComponent (animComponent); 'Désolé, J'ai essayé de formater le commentaire en utilisant le formatage de mini-Markdown mais je ne sais pas pourquoi il ne le fait pas. J'espère que c'est plus ou moins clair. – Notbad
Pour le prochain, sachez que vous pouvez juste éditer votre question originale et ajouter n'importe quel code relatif demandé là;) – kikito