Código:
Y al llamar a la funcion enviaria un tipo:void AddService(Type type);
Código:
¿Es posible? AddService(std::string)
| |||
¿Cómo pasar un tipo como parámetro de una función? Por ejemplo algo así:
Código:
Y al llamar a la funcion enviaria un tipo:void AddService(Type type);
Código:
¿Es posible? AddService(std::string) |
| |||
Respuesta: ¿Cómo pasar un tipo como parámetro de una función? Si. Estoy pasando un programa de C# a C++ y en este podías enviar "un tipo de dato" para por ejemplo, insertarlo en un Dictionary ( en c++ sería un std::map) Esta es la función en C#:
Código:
public class GEServiceContainer : GameServiceContainer { Dictionary<Type, object> services = new Dictionary<Type ,object>(); public GEServiceContainer() { } public void AddService(Type Service, object Provider) { if (!services.ContainsKey(Service)) { base.AddService(Service, Provider); this.services.Add(Service, Provider); } } public void RemoveService(Type Service) { if (services.ContainsKey(Service)) services.Remove(Service); base.RemoveService(Service); } [...] |
| |||
Respuesta: ¿Cómo pasar un tipo como parámetro de una función? No puedes pasar como parámetro un tipo de dato a una función. Tienes que pasar un dato, que será de un tipo determinado. Te indico un par de modos de "hacerlo" en C (pero pasando dos parámetros): 1.- Pasa la dirección de tu dato mediante un puntero void y un indicador del tipo de dato que estás pasando. Por ejemplo:
Código C:
Ver original 2.- Mediante una unión (por referencia o valor) y un indicador del tipo de dato:
Código C:
Ver original No creo que sea difícil aplicar algo parecido en C++ (mis conocimientos de C++ son, de momento, muy básicos). Saludos, Edito: Después de escribir esto veo tu respuesta, en la que veo que la función AddService toma dos parámetros, y aparentemente la idea no es muy diferente de lo que te he posteado. Última edición por Fw190; 28/11/2012 a las 12:04 |
Etiquetas: |