2011-02-04 7 views
0

Possible Duplicate:
How can I pass a vector variable to a function?Как передать векторную переменную функции?

Я следующий код:

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]); 

Однако, я получаю эту ошибку:

error: cannot convert ' std::vector<char*, std::allocator<char*> > ' to ' const char* ' for argument '1' to ' int my_function(const void*) '

Можете ли вы помочь мне решить эту проблему?

+0

Same User Duplicate: http://stackoverflow.com/questions/4895644/how-can-i-pass-a-vector-variable-to-a-function – Muggen

+0

Ошибка, которую вы получаете, предполагает, что функция, которую вы используете 're call не соответствует описанию в ваших комментариях. Можете ли вы подтвердить, что предоставленный образец кода соответствует тому, что у вас есть? Код, который вы опубликовали, синтаксически действителен. – templatetypedef

+1

Отредактируйте существующий вопрос, не спрашивайте совершенно новый. – GManNickG

ответ

1

что-то вроде:

typedef std::vector<std::string> myvec; 

void func(myvec &vec){ 

//use vec 
} 


main.cpp: 

myvec vec; 

func(vec); 
0

Ваша функция определяется как принимать параметр const void *, не const char * параметра (в соответствии с сообщением об ошибке компилятора). Измените декларацию и определение, и вы должны быть в порядке, или вы могли бы лить значение const void *.

0

Единственный безопасный способ сделать это - получить std :: vector в вашей функции. В большинстве компиляторов, хотя вы можете отправить его как массив символов с помощью

$(vec[0]) 

Как я уже сказал, это не безопасно, так как стандарт не говорить, что вектор должен быть в последовательной памяти, но опять же, Mot компиляторы помещают вектор в последовательную память.

Смежные вопросы