2011-01-11 3 views
0

Я разрабатывает список, в котором я использовал некоторые защищенные переменные count, entry[maxlist] и т.д.Список Наследование для сортировки списка защищенных пользователей из сферы

list.h

class List 
    { 
    public: 
    //etc etc 

    protected: 
    int count; 
    int entry[maxlist]; 
    }; 

Sortable_list .h

typedef Key Record; 
class Sortable_list:public List<Record> 
{ 
void selection_sort() 
    { 
     for(int position=count-1;position>0;i--) // Count is not declared in the scope 
     { 
     int max=max_key(0, position); 
     swap(max, position); 
     } 
    } 
}; 

Что-то не так wi th наследует список для сортируемого списка? Почему он показывает количество отсчетов?

+0

Вы наследуя правильный список? Ваш List.h не является классом шаблона, но ваше наследование из списка ... –

+0

Это на самом деле шаблон. Я только что написал вручную в приведенном выше. Вот полный код List.h: pastebin.com/3xTADqvN В этом что-то не так? – Cipher

+0

Я проверил ваш код и, кроме некоторых проблем, из-за 'using namespace std' и использования' i' вместо 'position' в вашем цикле' for', ваш код компилируется. Вы уверены, что вы включили 'List.h' в' Sortable_list.h'? –

ответ

1

#Edit: После просмотра всего кода он становится понятным. У вас двусмысленности из-за того, что вы включили, он будет скомпилирован с msvc, потому что он обрабатывает такие случаи молча, но для g ++ вы должны явно указать, что count принадлежит к этому классу, выполнив this->count. У вас также были проблемы из-за std::range_error, чего можно было избежать, удалив using namespace std или заменив range_error на ::range_error, который укажет, что вы хотите глобальную область. Другая проблема с вашим кодом заключается в том, что вы использовали неопределенную переменную i в своем Sortable_list. Фиксированный код, который компилируется с g ++ и msvc: http://codepad.org/7V70rNqf

Я не хочу звучать грубо, но я настоятельно рекомендую вам прочитать книгу на C++, ваш текущий код очень анти-идиоматический, и его можно было бы сделать общим с меньшее количество кода.

+0

На самом деле это шаблон. Я только что написал вручную в приведенном выше. Вот полный код List.h: pastebin.com/3xTADqvN В этом что-то не так? – Cipher

0

Почему вы не используете sort шаблон функции от <algorithm>? Все, что вам нужно написать только одну небольшую функцию Compare.

0

Посмотрите, как ваш List не шаблонный класс, так List<Typename> не существует .. Кроме того, вы можете использовать std::set<T> как шаблон класса для отсортированного контейнера =>http://www.sgi.com/tech/stl/set.html

+0

Это на самом деле шаблон. Я только что написал вручную в приведенном выше. Вот полный код List.h: http://pastebin.com/3xTADqvN В этом что-то не так? – Cipher

Смежные вопросы