在过去的几天里,我已经在这里待了几个小时,并尽可能地在线搜索以获得答案,我被困住了。就在我认为MSDN对我有答案时,我仍然遇到问题。我有InstalledPrograms.h
标题class InstalledProgram{}
。
三名建筑师
#ifdef CONSTRUCTOR
InstalledProgram::InstalledProgram();
InstalledProgram::InstalledProgram(String^ p_DisplayName);
InstalledProgram::InstalledProgram(String^ p_DisplayName, String^ p_ParentDisplayName, string p_Version);
#endif
我声明了清单:list<InstalledProgram> ProgramList;
将其传递给此功能:
list<InstalledProgram> InstalledProgram::GetUserUninstallKeyPrograms(RegistryKey ^CurUserInstallKey, RegistryKey^ HkeylmRoot, list<InstalledProgram> paramProgramList)
像这样
GetUserUninstallKeyPrograms(Wow64UninstallKey, ClassKey, ProgramList);
做一些事情,我在代码中找到了一个我需要在列表中插入新实例的点:
paramProgramList.insert(paramProgramList.end(), new InstalledProgram(Name));
我遇到的问题是&#34;。&#34;在插入显示&#34;没有重载函数的实例与参数列表&#34;匹配,并且InstalledProgram(Name)
周围的括号显示&#34;否
参数类型(System :: String ^)&#34;的构造函数的实例。
我不明白为什么。
任何帮助将不胜感激。
答案 0 :(得分:0)
paramProgramList是list<InstalledProgram>
,但您尝试将new InstalledProgram(Name)
指针插入InstalledProgram
。如果InstalledProgram
可以复制,则只需删除new
一词。
至于#34;没有参数类型的构造函数实例(System :: String ^)&#34 ;;除非没有定义CONSTRUCTOR,否则我无法从我看到的代码中解释。
此外,虽然按照您的方式编写插入技术没有任何技术上的错误,但这会更简洁:
paramProgramList.push_back(InstalledProgram(Name));