0

在过去的几天里,我已经在这里待了几个小时,并尽我所能在网上搜索这个问题的答案,但我被困住了。就在我认为 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));

我遇到的问题是“。” 在插入之前显示“没有重载函数的实例与参数列表匹配”,并且周围的括号InstalledProgram(Name)显示“没有参数类型的构造函数实例 (System::String ^)”。

我不明白为什么。

任何帮助,将不胜感激。

4

1 回答 1

0

paramProgramList 是 a但list<InstalledProgram>您试图插入指向. 如果是可复制的,您只需删除单词.new InstalledProgram(Name)InstalledProgramInstalledProgramnew

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

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

paramProgramList.push_back(InstalledProgram(Name));
于 2014-04-25T02:16:41.337 回答