我在自定义堆栈模板类中嵌套了迭代器。 我现在遇到的问题是,当我在main中为我的堆栈创建迭代器时,我的嵌套迭代器的构造函数不匹配。我想知道问题是什么。
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() {};
};
我在主
中使用以下行创建堆栈迭代器stack<double>::my_iterator it;
答案 0 :(得分:1)
您似乎忘记了*
:
class my_iterator
{
public:
my_iterator() : list(0), curr(0) {};
private:
stack<T>* pStack; // Pointer to a stack.
int curr;
};
当然,您需要更多成员(包括更好的构造函数)。但这应该至少允许您创建默认迭代器,而不是特别指向任何堆栈。
答案 1 :(得分:0)
我认为问题是stack
类的默认构造函数不接受任何参数。但是在这里:
my_iterator() : list(0), curr(0) {};
你把0传给了ctor。
答案 2 :(得分:0)