【发布时间】:2011-12-14 23:34:10
【问题描述】:
现在我得到了错误:
error: ‘oset<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Comparator’ is an inaccessible base of ‘CaseSensitive’
我一直试图找出问题几个小时无济于事,希望你们中的一个可以帮助我。相关代码如下:
template <class T>
class oset;
template <class T>
class oset {
....
public:
class Comparator {
public:
virtual ~Comparator() {}
virtual int compare(T, T) = 0;
};
private:
Comparator *comp;
....
public:
// new empty set:
oset(Comparator*);
....
};
....
class CaseSensitive : oset<string>::Comparator
{
public:
virtual ~CaseSensitive(){}
virtual int compare(string str1, string str2)
{
return strcmp(str1.c_str(), str2.c_str());
}
};
....
int main() {
oset<string>::Comparator *cs = new class CaseSensative();
//error in line above
....
}
我要做的是创建一个抽象的 Comparator 对象,以便我可以定义自定义类型顺序来对 oset 进行排序。
谢谢!
【问题讨论】:
标签: c++ abstract forward-declaration incomplete-type