Почему он не распознает векторные данные в моем подклассе? он объявлен защищенным, поэтому я в замешательстве - PullRequest
1 голос
/ 18 октября 2019

Я создаю суперкласс сортировщика с подклассами для определенных сортов. Я планирую использовать вектор с именем 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. * точное сообщение: «использование необъявленного идентификатора« данные »»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...