我有以下代码:
std::vector <const char*> value;
value[0] = buf.c_str();
// Now I have to pass the vector variable to function.
// Function declaration: int my_function(const char *)
my_function(value[0]);
但是,我收到了这个错误:
错误:无法将参数'1'的'
std::vector<char*, std::allocator<char*> >
'转换为'const char*
'到'int my_function(const void*)
'
你能帮我解决这个问题吗?
答案 0 :(得分:1)
类似的东西:
typedef std::vector<std::string> myvec;
void func(myvec &vec){
//use vec
}
main.cpp:
myvec vec;
func(vec);
答案 1 :(得分:0)
您的函数被定义为采用const void *
参数,而不是const char *
参数(根据编译器的错误消息)。更改声明和定义,您应该没问题,或者您可以将值转换为const void *
。
答案 2 :(得分:0)
唯一安全的方法是在函数中接收std :: vector。在大多数编译器上,您可以通过
将其作为char数组发送$(vec[0])
正如我所说,这不安全,因为标准并没有说向量需要在连续的内存中,但是再次,mot编译器将向量放在连续的内存中。