Reputation: 75
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);
}
Then get
error: no match for call to '(std::__debug::vector<std::basic_string<char> >)
(const char* [14], const char**)'
anyone get any idea about this? THanks
Upvotes: 0
Views: 102
Reputation: 121961
That is not an initialization: use vector::assign()
instead:
endPointLSRKey.assign(lsrKeysInit, lsrKeysInit+14);
Calculate the number of elements in lsrKeysInit
instead of hard-coding the 14
(which would require updating if elements were removed or added from lsrKeysInit
):
endPointLSRKey
.assign(lsrKeysInit,
lsrKeysInit + (sizeof(lsrKeysInit)/sizeof(lsrKeysInit[0])));
If C++11 support, you can use std::begin()
and std::end()
:
endPointLSRKey.assign(std::begin(lsrKeysInit), std::end(lsrKeysInit));
Upvotes: 2
Reputation: 157314
You can only use the form variable(arguments...)
in an initializer (i.e. in a declaration). When assigning to a variable that already exists, use an assignment or in this case use assign
:
endpointLSRKey.assign(lsrKeysInit, lsrKeysInit+14);
Upvotes: 0