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