Я создаю суперкласс сортировщика с подклассами для определенных сортов. Я планирую использовать вектор с именем data для всех видов, но мне интересно, почему это приводит к синтаксической ошибке (см. Код ниже)
Я объявил данные защищенного члена, чтобы они были доступны для всех подклассовно компилятору это не нравится.
template<typename T>
class Sorter{
protected:
vector<T> data;
public:
Sorter();
Sorter(T& x):data(x){}
void setData(const std::vector<T>& x) {
data = x;
}
virtual void sort() = 0;
};
template <typename T>
//bubble sort
class MysterySorterA: public Sorter<T>{
public:
virtual void sort(){
//auto& t1 = this->data[0];
//auto& t2 = this->data[1];
for (unsigned long i = 0; i < data.size()-1; i++)
// Last i elements are already in place
for (unsigned long j = 0; j < data.size() - i - 1; j++)
if (data[j] > data[j+1])
swap(&data[j],&data[j+1]);
/*if(t1 < t2){
cout << "Comparing is OK" << endl;
}*/
cout << "Mystery Sorter A" << endl;
}
void swap(int *x, int *y){
int temp = *x;
*x = *y;
*y = temp;
}
};
Я ожидаю увидеть сообщения об ошибках, но получаю "использование необъявленного идентификатора". РЕДАКТИРОВАТЬ: "Данные" - это необъявленный идентификатор
* 1007. * точное сообщение: «использование необъявленного идентификатора« данные »»