私のエラー:
Main.cpp:18 からインクルードされたファイル内: QuickSort.h:
メンバー関数内'void CQuickSort<T>::Partition(std::vector<T, std::allocator<_CharT> >*, int, int, int) [with T = CMoviePointer]'
: QuickSort.h
:49:'void CQuickSort<T>::Sort(std::vector<T, std::allocator<_CharT> >*) [with T = CMoviePointer]'
Main.cpp:70 からインスタンス化: ここからインスタンス化 QuickSort.h:
31: エラー: から'std::vector<CMoviePointer, std::allocator<CMoviePointer> >'
非スカラー型への変換'CMoviePointer'
要求された QuickSort.h
:49:'void CQuickSort<T>::Sort(std::vector<T, std::allocator<_CharT> >*) [with T = CMoviePointer]'
Main.cpp:70 からインスタンス化されました: ここからインスタンス化されました QuickSort.h
:35: エラー: /usr/include/c++/4.4/bits/vector.tcc:156 に一致しません'operator='
:'*(p_vec + ((long unsigned int)(((long unsigned int)upper) * 24ul))) = temp'
注: 候補それは:std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = CMoviePointer, _Alloc = std::allocator<CMoviePointer>]
そして、これが私のプログラムです。
#ifndef _QUICKSORT_H_
#define _QUICKSORT_H_
#include <vector>
template<class T>
class CQuickSort{
public:
void Partition(std::vector<T> *p_vec, int upper, int lower, int size){
if (size <2)
return;
int pivot_index = size/2;
pivot_index += lower;
while(lower < upper){ //do until start and end of list meet
while(p_vec[lower] < p_vec[pivot_index]){
lower--;
}
while(p_vec[pivot_index] < p_vec[upper]){
upper--;
}
T temp = p_vec[lower];
p_vec[lower] = p_vec[upper];
p_vec[upper] = temp; //swap upper and lower until lower is equal to or
}
}
void Sort(std::vector<T> *p_vec){
int size = p_vec->size();
if(size < 2)
return;
Partition(p_vec,0, size-1, size);
}
};
#endif
私は途方に暮れています。何が間違っているのか、実際の問題がどこにあるのかわかりません。どんな助けでも大歓迎です