Je suis là depuis quelques heures ces deux derniers jours et je recherche du mieux que je peux en ligne pour trouver une réponse à cette question et je suis bloqué. Juste quand je pense que MSDN a une réponse pour moi, j'ai toujours un problème. J'ai un en-tête InstalledPrograms.h
avec class InstalledProgram{}
.C++ std :: liste les problèmes avec insert
Trois Constructors
#ifdef CONSTRUCTOR
InstalledProgram::InstalledProgram();
InstalledProgram::InstalledProgram(String^ p_DisplayName);
InstalledProgram::InstalledProgram(String^ p_DisplayName, String^ p_ParentDisplayName, string p_Version);
#endif
Je déclare la liste: list<InstalledProgram> ProgramList;
passer à cette fonction:
list<InstalledProgram> InstalledProgram::GetUserUninstallKeyPrograms(RegistryKey ^CurUserInstallKey, RegistryKey^ HkeylmRoot, list<InstalledProgram> paramProgramList)
comme celui-ci
GetUserUninstallKeyPrograms(Wow64UninstallKey, ClassKey, ProgramList);
Faites quelques choses et j'arrive à un point dans le code que je dois insérer une nouvelle instance dans la liste:
paramProgramList.insert(paramProgramList.end(), new InstalledProgram(Name));
Le problème que j'ai HAVING est que le « » avant insertion indique "Aucune instance de fonction surchargée ne correspond à la liste d'arguments", et les parenthèses autour de InstalledProgram(Name)
montrent "No instance de constructeur pour le type d'argument (System :: String ^)".
Je ne comprends pas pourquoi.
Toute aide serait appréciée.
je n'avais pas un constructeur de copie. Je ne pensais pas en utiliser un. Mais j'ai ajouté un et il a toujours refusé d'accepter le paramètre Name qui est String ^. J'ai fini par devoir créer une nouvelle instance vide, définir la valeur manuellement et ensuite faire une copie avant de la passer à push_back. –
Je ne peux pas dire avec certitude sans voir toute la définition de InstalledProgram, mais si cela est vrai, je pense que cela doit signifier que CONSTRUCTOR n'est pas défini. – dlf