2013-03-14 4 views
0

Я унаследовал некоторый код и застрял на том, что, как я думал, должно быть простым обновлением.Convert std :: vector <const Type*> to const std :: vector <T, A> & Vec

У меня есть следующие функции

template<typename T> 
class ArrayRef { 
public: 
typedef const T *iterator; 
typedef const T *const_iterator; 

private: 
/// The start of the array, in an external buffer. 
const T *Data; 

public: 
/// Construct an ArrayRef from a std::vector. 
template<typename A> 
ArrayRef(const std::vector<T, A> &Vec) 
: Data(Vec.empty() ? (T*)0 : &Vec[0]), Length(Vec.size()) {} 
}; 

И мне нужно передать вектор, определенный с последующим, в этой функции.

std::vector<const myType*> myVector(4); 

Каков самый простой способ сделать это?

+0

Являются ли аргументы шаблона 'T' и' A' функцией? В этом случае он должен просто работать. Если это не так, какие типы они и как 'T' относятся к' myType'? – Grizzly

+0

Я включил определение всей функции, делает ли это более понятным? –

+0

Что такое 'T' в вашем коде? –

ответ

1

Просто передайте свой вектор:

ArrayRef<const myType*> myArrayRef(myVector); 

Есть ли какой-то причине это не работает для вас?

+0

Это правильно, произошла ошибка компиляции где-то еще, что помешало этому работать (и выплюнул сообщение об ошибке, указывающее на эту строку). Исправлено. Спасибо за Ваш ответ. –

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