2013-03-14 240 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

相關問題