void FakeMas::initLSRKeys() {
const char* lsrKeysInit[]= {
"platform.enhancedmetadata.categories.baseurl",
"platform.enhancedmetadata.eventresolution.baseurl",
"platform.enhancedmetadata.image.baseurl",
"platform.enhancedmetadata.ondemands.baseurl",
"platform.enhancedmetadata.programmes.baseurl",
"platform.enhancedmetadata.recommend.baseurl",
"platform.enhancedmetadata.schedule.baseurl",
"platform.enhancedmetadata.scheduleevents.baseurl",
"platform.enhancedmetadata.search.baseurl",
"platform.enhancedmetadata.serviceresolve.baseurl",
"platform.enhancedmetadata.applicationresolve.baseurl",
"platform.enhancedmetadata.suggestions.baseurl",
"platform.enhancedmetadata.summaries.baseurl",
"platform.enhancedmetadata.bootstrap.baseurl"
};
endpointLSRKey(lsrKeysInit, lsrKeysInit+14);
}
然后得到
error: no match for call to '(std::__debug::vector<std::basic_string<char> >)
(const char* [14], const char**)'
任何人都对此有所了解? 感谢
答案 0 :(得分:2)
这不是初始化:改为使用vector::assign()
:
endPointLSRKey.assign(lsrKeysInit, lsrKeysInit+14);
计算lsrKeysInit
中的元素数量,而不是对14
进行硬编码(如果从lsrKeysInit
删除或添加元素,则需要更新):
endPointLSRKey
.assign(lsrKeysInit,
lsrKeysInit + (sizeof(lsrKeysInit)/sizeof(lsrKeysInit[0])));
如果支持C ++ 11,您可以使用std::begin()
和std::end()
:
endPointLSRKey.assign(std::begin(lsrKeysInit), std::end(lsrKeysInit));
答案 1 :(得分:0)
您只能在初始值设定项中使用variable(arguments...)
形式(即在声明中)。分配给已存在的变量时,请使用分配,或者在这种情况下使用assign
:
endpointLSRKey.assign(lsrKeysInit, lsrKeysInit+14);