C ++ std :: list插入问题

时间:2014-04-25 02:10:54

标签: c++ stdlist

在过去的几天里,我已经在这里待了几个小时,并尽可能地在线搜索以获得答案,我被困住了。就在我认为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;的构造函数的实例。

我不明白为什么。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

paramProgramList是list<InstalledProgram>,但您尝试将new InstalledProgram(Name) 指针插入InstalledProgram。如果InstalledProgram可以复制,则只需删除new一词。

至于#34;没有参数类型的构造函数实例(System :: String ^)&#34 ;;除非没有定义CONSTRUCTOR,否则我无法从我看到的代码中解释。

此外,虽然按照您的方式编写插入技术没有任何技术上的错误,但这会更简洁:

paramProgramList.push_back(InstalledProgram(Name));