C++创建类似容器的类

Jea*_*lho 0 c++ containers templates

我正在尝试创建一个应该定义图搜索算法行为的类.

该类接收一个通用容器作为模板参数,并根据容器进行操作

template <typename N, typename E, class Container>
class Frontier {
    private:
        Container frontier;

    public:
        bool isEmpty() { return this.frontier.empty(); }

        typename Graph<N, E>::const_iterator pop() { return this.frontier.pop(); }

        bool push(typename Graph<N, E>::const_iterator it) { return this.frontier.push(it); }
};
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译时我得到了

request for member ‘frontier’ in ‘this’, which is of non-class type 
Run Code Online (Sandbox Code Playgroud)

我知道这可以做到,因为stl容器是这样实现的

template<class T, Class C = deque<T> > class std::stack;
Run Code Online (Sandbox Code Playgroud)

我注意到了Class中的大写C,所以我尝试在实现中使用Class但是我从编译器中得到了"Class not defined".我怎么解决这个问题?

Dar*_*con 6

您错过了错误消息的结束,这将告诉您这this是一个指针,并询问您是否要使用->而不是..这应该可以解决错误.

请注意,classtypename在模板参数列表等效.没什么大不了的,但是一致性很好.(注意,Class作为关键字无效.不确定从哪里得到...)

template <typename N, typename E, typename Container>
class Frontier {
    private:
        Container frontier;

    public:
        bool isEmpty() { return this->frontier.empty(); }

        typename Graph<N, E>::const_iterator pop() { return this->frontier.pop(); }

        bool push(typename Graph<N, E>::const_iterator it) { return this->frontier.push(it); }
};
Run Code Online (Sandbox Code Playgroud)