Ben kabul edebilir bu sınıf için bir kurucu oluşturmak istediğiniz tip T. birden fazla değeri tutacak olan yeni şablonu sınıf "CrazyBucket < T>" oluşturmaya çalışıyorum argümanları olarak herhangi bir 2 ileri yineleyici ve sınıf örneğine bu değerler (T tipi) kopyalayın.
CrazyBucket<T>::CrazyBucket(iterator< forward_iterator_tag, T > start, iterator< forward_iterator_tag, T > end)
{ ... }
Ama birlikte, ile
aşağıdaki hatayı alıyorumvector<int> vec;
vec.push_back(4);
CrazyBucket<int> bucket(vec.begin(), vec.end());
,
candidate constructor not viable: no known conversion from 'iterator' (aka '__wrap_iter<pointer>') to 'std::iterator<std::forward_iterator_tag, int>' for 1st argument
Herhangi bir yardım aramak çalıştığınızda nasıl yapmalıdır:
OluşturucuKurucum tanımlamak çok takdir edilmektedir.
Şimdiden teşekkürler.
Bu sorulara bir göz atın - http://stackoverflow.com/questions/8751460/how-to-restrict-an-iterator-to-being-a-forward-iterator –
Neden böyle basit bir şey değil: http: //ideone.com/EU9FTK (Kabul edilebilir ise, cevap olarak gönderirim). – PaulMcKenzie
@NickZavaritsky - işaretçi için teşekkürler. Gönderiyi doğru olarak anlayamayabilirim, ancak bu poster girilen iteratör türlerini sınırlamak istiyor mu? Yineleyicinin gösterdiği veri türü hakkında konuşmaz (örneğimde, int). – Akanes