Если у вас есть функция, принимающая аргумент char *, то вы можете передать только один из char * в векторе.Например:
std::vector<char*> v;
char buf[] = "hello world";
v.push_back(buf);
the_function(v[0]);
Если вы хотите вызвать функцию для каждого члена в векторе, просто выполните цикл:
for (std::vector<char*>::iterator i = v.begin(); i != v.end(); ++i)
the_function(*i);
РЕДАКТИРОВАТЬ: на основе вашего комментария ниже, вы действительно хотитенаписать функцию, которая принимает вектор в качестве аргумента ... try:
void the_function(const std::vector<char*>& v)
{
// can access v in here, e.g. to print...
std::cout << "[ (" << v.size() << ") ";
for (std::vector<char*>::iterator i = v.begin(); i != v.end(); ++i)
std::cout << *i << ' ';
std::cout << " ]";
}
Если у вас есть существующая функция, которую вы хотите вызвать, и вы не хотите изменять список аргументов ...
void TV_ttf_add_row(const char*, const char*, const void*);
... тогда, скажем, вы знаете, что в векторе будет достаточно элементов:
assert(v.size() >= 3); // optional check...
TV_ttf_add_row(v[0], v[1], v[2]);
или
if (v.size() >= 3)
TV_ttf_add_row(v[0], v[1], v[2]);
или, если вы хотите исключениеВыдается, если в v
недостаточно элементов, а затем ...
try
{
TV_ttf_add_row(v.at(0), v.at(1), v.at(2));
}
catch (const std::exception& e)
{
std::cerr << "caught exception: " << e.what() << '\n';
}
(блок try / catch не должен окружать один вызов функции - до тех пор, пока v.at( )
вызовы находятся где-то внутри блока try
или функции, вызываемой прямо или косвенно изнутри блока).