簡體   English   中英

自定義模板類的C ++迭代器

[英]C++ iterator for custom template class

我在我的自定義堆棧模板類中嵌套了迭代器。 我現在得到的問題是,當我在主堆棧中為堆棧創建迭代器時,嵌套的迭代器的構造函數不匹配。 我想知道可能是什么問題。

template <class T>
class stack
{
private:
    int top;
    T st[100];

public:
    class my_iterator
    {
    public:
        my_iterator() : list(0), curr(0) {};

    private:

        stack<T> list;
        int curr;
    };

//publics in stack class
public:
    stack();
    void push(T i);
    T pop();
    void print();
    bool is_full();
    my_iterator begin() {};

};

然后在main中使用以下行創建用於堆棧的迭代器

stack<double>::my_iterator it;

您好像忘記了*

class my_iterator
{
public:
    my_iterator() : list(0), curr(0) {};
private:
    stack<T>* pStack; // Pointer to a stack.
    int curr;
};

當然,該類需要更多的成員(包括更好的構造函數)。 但這至少應允許您創建不特別指向任何堆棧的默認迭代器。

我認為問題在於您的stack類的默認構造函數不接受任何參數。 但在這兒:

my_iterator() : list(0), curr(0) {};

您將0傳遞給ctor。

問題是表達式list(0)。

改為

my_iterator() : curr(0) {};

列表成員將被默認初始化。 如果要完成任何特定的構造,請參考列表構造函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM