Me gustaría ver cómo este ejemplo de código existente podría aprovechar la función de lista de inicializadores C++ 0x.Ejemplo de la lista de inicializadores C++ 0x
Example0:
#include <vector>
#include <string>
struct Ask {
std::string prompt;
Ask(std::string a_prompt):prompt(a_prompt){}
};
struct AskString : public Ask{
int min;
int max;
AskString(std::string a_prompt, int a_min, int a_max):
Ask(a_prompt), min(a_min), max(a_max){}
};
int main()
{
std::vector<Ask*> ui;
ui.push_back(new AskString("Enter your name: ", 3, 25));
ui.push_back(new AskString("Enter your city: ", 2, 25));
ui.push_back(new Ask("Enter your age: "));
}
¿Sería apoyar algo como esto:
Ejemplo 1:
std::vector<Ask*> ui ={
AskString("Enter your name: ", 3, 25),
AskString("Enter your city: ", 2, 25),
Ask("Enter your age: ")
};
o debe tener literales como esto ?:
Ejemplo 2:
std::vector<Ask*> ui ={
{"Enter your name: ", 3, 25},
{"Enter your city: ", 2, 25},
{"Enter your age: "}
};
En caso afirmativo, ¿cómo se manejaría la diferencia entre AskString y Ask?
Si utiliza std :: vector no podría agregar AskString! –
mmmmmmmm
Pensé que AskString era una función que me devolvía un Ask, tonto. – rlbond
Eso está muy mal. AskString es un tipo distinto que utiliza Ask como su clase base. Lo que llamas una función es un constructor. Son cosas muy diferentes. – jmucchiello