Bonjour,

Je suis confronter sur un problème depuis maintenant une semaine et j'ai bo chercher sur internet je n'arrive pas à trouver une solution de mon problème.

Mon Problème se situe sur la surcharge du nombre de paramètre d'une fonction.

J'ai une classe C_Mesh :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
	class SILVERENGINE_API C_Mesh{
		public:
			// ... autre méthodes de la classe
 
			virtual C_Mesh* GetThisPtr() { return this; } 
 
			virtual void Create(C_Mesh& p_mesh){};
 
	};
et j'ai également une classe C_Plane :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
        class SILVERENGINE_API C_Plane{
		public:
			// ... autre méthodes de la classe
 
 
			virtual C_Plane* GetThisPtr() { return this; } 
 
			virtual void Create(C_Mesh& p_mesh, float[] p_size, int[] p_nbSubPlane);
 
 
	};
Pour finir j'ai un MeshManager :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
/**
        *       \class   C_MeshManager
        *       \extends C_Singleton<C_MeshManager>
        */
	class SILVERENGINE_API C_MeshManager : public C_Singleton <C_MeshManager>{
		MAKE_SINGLETON(C_MeshManager)
		/**
                * \publicsection
                */
		public:
 
			template<TMeshType p_type, typename ... Args>
			C_Mesh* Create(std::string const& p_name,  Args&& ... p_args){
				C_Mesh* newMesh;
 
				auto meshCreate = MeshFactory.Create(p_type)->GetThisPtr(); // <-- meshCreate = C_Plane* pour le test
				meshCreate->Create(newMesh, p_args);
				return newMesh;
			}
 
		/**
                * \privatesection
                */
		private:
			C_MeshManager();
			~C_MeshManager();
	};
lorsque je compile tous se passe bien mais lorsque j'exécute le programme cela m'indique :

Erreur 4 error C2660: 'SilverEngine::C_Mesh::Create'*: la fonction ne prend pas 3 arguments c:\users\ksta\desktop\dll\sources\silverengine\core\c_meshmanager.h 47 1 TestDLL
voici l'utilisation :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
        float size[]  = { 5.0f, 5.0f };
	int subPlane[] = { 0, 0 };
	m_testMesh = MeshManager.Create<TMeshType::MESH_PLANE>("testPlane", size, subPlane);
Se que j'aimerais c'est obliger l'utilisateur à redéfinir la fonction Create dans les sous class de Mesh et si possible rajouter des arguments.

J'ai essayer de pas les mettre virtual, de définir using C_Mesh::Create; devant la fonction de C_Plane mais aucun résultat imposible d'exécuter.

Si quelqu'un aurai une solution je le remercie d'avance.