Je l'ai vu la syntaxe exacte que je suis en train avec un void function, mais je ne peux pas comprendre pourquoi il ne fonctionne pas dans mon code:std :: carte Initialiser dans un appel à un constructeur de classe
constructeur:
class Input
{
public:
Input(const std::map<std::string, void(*)(void)> &arg_0)
{ //...code...// }
};
Appel au constructeur avec un std temporaire :: carte:
Input _Input(
std::map<std::string, void(*)(void)> {
{"exit", [](){exit(1);}}
}
);
aussi, juste le moindre changement à
std::map<std::string, void(*)(void)> NAME = {
{"exit", [](){exit(1);}
}
est suffisant pour résoudre le problème, et pour une raison quelconque, NAME est également hors de portée (ce qui est ce que je veux). Donc, fondamentalement, je connais la solution, mais je veux savoir pourquoi le premier code ne fonctionne pas. P.S. L'erreur est error: expected ‘)’ before ‘{’ token IN std::map<std::string, void(*)(void)> {
EDIT:
Je vois, la manière exacte que j'appelle le constructeur est apparemment importante:
class BackEnd
{
private:
Input _Input(
std::map<std::string, void(*)(void)> {
{"exit", [](){exit(1);}}
}
);
};
Dans ce cas, il cesse de fonctionner et renvoie une erreur. Exemple: https://ideone.com/ikGUGF
http://cpp.sh/4utj4? – tkausl
@tkausl Je vois, hmm, je vais vérifier mon code. – areuz
Quel compilateur utilisez-vous? –