C++0x Initialisierungsliste Beispiel
Ich würde gerne sehen, wie dieses Beispiel der vorhandene code in der Lage wäre, um die Vorteile der C++0x-Initialisierer-Liste-Funktion.
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: "));
}
Würde es unterstützen, so etwas wie dieses:
Beispiel1:
std::vector<Ask*> ui ={
AskString("Enter your name: ", 3, 25),
AskString("Enter your city: ", 2, 25),
Ask("Enter your age: ")
};
Oder muss Sie es haben-Literale wie das?:
Beispiel2:
std::vector<Ask*> ui ={
{"Enter your name: ", 3, 25},
{"Enter your city: ", 2, 25},
{"Enter your age: "}
};
Wenn ja, wie würde der Unterschied zwischen AskString und Fragen werden behandelt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du letzten Beispiele wäre nicht zulässig, da Sie Fragen, für Hinweise, sondern versuche, um lokale temporäre Objekte statt.
Dass wäre erlaubt und es würde keine geben Mehrdeutigkeit.
Dass wäre auch richtig :
Und dein Beispiel ist mehr wie :
und wieder gäbe es keine Zweideutigkeit über die Arten.
Einer c++ - Initialisierungsliste ist homogene, das heißt, es müssen alle den gleichen Typ, also z.B. #2 ist draußen. Wenn Sie
new
im Beispiel 1, es würde funktionieren.