我正在开发一个列表,其中我使用了一些受保护的变量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);
}
}
};
将List继承到可排序列表有什么问题吗?为什么它显示超出范围?
答案 0 :(得分: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 ++的书,你当前的代码非常反本用,并且可以用较少的代码制作通用代码。
答案 1 :(得分:0)
为什么不使用<algorithm>
标题中的sort函数模板?您只需编写一个小Compare
函数即可。
答案 2 :(得分:0)
看起来您的List
不是模板类,因此List< Typename >
不存在。
此外,您可以使用std::set<T>
作为已排序容器的模板类=&gt; http://www.sgi.com/tech/stl/set.html