2013-03-14 194 views
0

我继承了一些代码,并且卡住了我认为应该是一个简单的更新。将std :: vector <const Type*>转换为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 2013-03-14 18:51:54

+0

我把整个函数定义放进去了,这是否更清楚? – 2013-03-14 18:55:49

+0

代码中的T是什么? – 2013-03-14 18:56:26

回答

1

只是通过你的载体:

ArrayRef<const myType*> myArrayRef(myVector); 

是有一些原因,这并不为你工作?

+0

这是正确的,在其他地方存在编译错误,导致它无法正常工作(并吐出指向此行的错误消息)。现在修复。感谢您的回答。 – 2013-03-14 19:25:47

相关问题